Покинул форум
Сообщений всего: 356
Дата рег-ции: Июнь 2013 Откуда: Ставропольский край
Помог: 10 раз(а)
[+]
Всем привет!
Есть необходимость проверять некоторые поля на соответствие. Использую preg_match()
Вот например для пароля, который может состоять из a-z A-Z 0-9 ! ? . , @ # $ % - _
А вообще лучше для паролей использовать md5, не хорошо ограничивать пользователей в символах для ввода пароля...
EuGen
Отправлено: 07 Июля, 2013 - 11:37:47
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
teddy пишет:
А вообще лучше для паролей использовать md5, не хорошо ограничивать пользователей в символах для ввода пароля...
Не понятно, как связан хеш и исходное представление.
Hapson пишет:
Внутри квадратных скобок нужно экранировать только \ ^ - ] правильно?
Экранировать следует всё, что используется в качестве служебных символов в регулярных выражениях. Если не уверены, то есть preg_quote
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
teddy
Отправлено: 07 Июля, 2013 - 11:42:01
Участник
Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013
Помог: 91 раз(а)
EuGen
Исходное представление чего? )
Hapson пишет:
например для пароля, который может состоять из a-z A-Z 0-9 ! ? . , @ # $ % - _
Вот придет пользователь, захочет ввести пароль Русскими буквами, а ему всплывет ошибка, вот о чем я...
Поэтому думаю лучше md5 и с точки зрения безопасности и с точки зрения свободы ввода пароля для пользователей ) Всем хорошо...
EuGen
Отправлено: 07 Июля, 2013 - 11:49:41
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
teddy
Исходное представление пароля.
И по-прежнему неясно, как связана валидация данных с тем, как они в конечном итоге будут храниться.
teddy пишет:
Вот придет пользователь, захочет ввести пароль Русскими буквами, а ему всплывет ошибка, вот о чем я..
- и при чём здесь md5, собственно - вот о чём я. Допустим, мы сделаем хранение в md5. Но регулярное выражение не пропустит пароль. Или мы не сделаем хранение в md5, но уберём регулярное выражение. Пароль не будет ограничивать ввод, но md5 использоваться при хранении не будет.
А, может, мы вообще решим использовать другой хеш. Поэтому - по-прежнему непонятно, как это связано.
Если боитесь за передачу данных и планируете считать хеш на клиенте - то мой совет - используйте https
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
Hapson
Отправлено: 07 Июля, 2013 - 11:52:13
Посетитель
Покинул форум
Сообщений всего: 356
Дата рег-ции: Июнь 2013 Откуда: Ставропольский край
А вообще лучше для паролей использовать md5, не хорошо ограничивать пользователей в символах для ввода пароля...
Я думаю если написать, что пароль может состоять из латинских букв, цифр и спецсимволов, то будет понятно, что кроме русских букв.
После проверки конечно MD5. А как MD5 работает с кириллицей?
----- ПЫХ тут - ходи туда, прежде чем писать сюда (толку больше будет)
EuGen
Отправлено: 07 Июля, 2013 - 11:53:09
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
Denkill
Отправлено: 07 Июля, 2013 - 11:56:59
Посетитель
Покинул форум
Сообщений всего: 330
Дата рег-ции: Янв. 2013 Откуда: Барнаул
Помог: 7 раз(а)
Hapson пишет:
А как MD5 работает с кириллицей?
Присоединяюсь, тоже интересно.
----- Хо-Хо-Хо
teddy
Отправлено: 07 Июля, 2013 - 11:59:18
Участник
Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013
Помог: 91 раз(а)
EuGen
Спасибо за совет, Евгений )
Мой вариант - убрать регулярку и скормить пароль "солёному" md5 перед отправкой его в БД )
Таким образом мы получаем:
1. Свободный ввод пароля для пользователя
2. Исключаем к примеру, SQL иньекцию
3. Безопасное хранение паролей в БД(ну, если туда кто то проник это уже не есть хорошо то понятно, но хоть какие то палки в колёса взломщика мы уже понаставили)
Hapson
Hapson пишет:
А как MD5 работает с кириллицей?
Любой введенный символ или несколько символов и пропущенный через md5 имеет свой уникальный хеш, так что можете использовать смело... Пользовался - проблем не было.
А зачем вам в таком случае preg_match? Толку то от него нет, только проблемы для пользователя.. Вам в любом случае в итоге в БД запишется хеш...
Hapson
Отправлено: 07 Июля, 2013 - 12:04:34
Посетитель
Покинул форум
Сообщений всего: 356
Дата рег-ции: Июнь 2013 Откуда: Ставропольский край
Помог: 10 раз(а)
[+]
Да, действительно, проверять нет смысла.
Посмотрел сейчас, md5 все что угодно принимает.
Функция пропускает через себя данные из формы. Если file, то это записывается в тектовый файл, а если db - в БД
----- ПЫХ тут - ходи туда, прежде чем писать сюда (толку больше будет)
EuGen
Отправлено: 07 Июля, 2013 - 12:04:40
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Строго говоря, md5 является слишком быстро вычислимым для того, чтобы использовать его для безопасного хранения данных. Многие специалисты не рекомендуют использовать md5 для хранения хешей. Правда, этот недостаток можно компенсировать добавлением соли и вводом таймаута на попытки проверки верности вводимых данных.
teddy пишет:
Мой вариант - убрать регулярку и скормить пароль "солёному" md5 перед отправкой его в БД )
В итоге и пришли к тому, что оно не связано и регулярное выражение нужно будет убирать в любом случае.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
Hapson
Отправлено: 07 Июля, 2013 - 12:05:53
Посетитель
Покинул форум
Сообщений всего: 356
Дата рег-ции: Июнь 2013 Откуда: Ставропольский край
Помог: 10 раз(а)
[+]
или htmlentities() убрать?
----- ПЫХ тут - ходи туда, прежде чем писать сюда (толку больше будет)
vanicon
Отправлено: 07 Июля, 2013 - 12:07:04
Частый посетитель
Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010 Откуда: Самара
Помог: 17 раз(а)
Hapson
Убрать, он нужен при выводе данных на страницу.
И да не забудьте поставить ограничение на длину пароля...
----- Так было, так есть и так будет
Hapson
Отправлено: 07 Июля, 2013 - 12:08:15
Посетитель
Покинул форум
Сообщений всего: 356
Дата рег-ции: Июнь 2013 Откуда: Ставропольский край
Помог: 10 раз(а)
[+]
vanicon пишет:
Hapson
Убрать, он нужен при выводе данных на страницу.
И да не забудьте поставить ограничение на длину пароля...
Спасибо. Да, про длину забыл.
----- ПЫХ тут - ходи туда, прежде чем писать сюда (толку больше будет)
EuGen
Отправлено: 07 Июля, 2013 - 12:09:18
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Hapson
0. Нет смысла использовать addslashes и mysql_real_escape_string вместе.
1. Вообще, функции mysql_* являются устаревшими, вместо них следует использовать расширение mysqli
2. Недопустимо использовать проверку на html-сущности при записи в БД. Это портит пользовательский ввод и может привести к коллизиям. Так, к примеру, md5(htmlspecialchars('<')) совпадёт с md5(htmlspecialchars('<')) - что является ошибкой. Общий совет - каждая проверка нужна в своём месте. Если данные из БД в дальнейшем отображаются в приложении - то именно там и нужно перед выводом пропускать данные через функции проверки на html
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.