PHP: пароли со специальными символами - PullRequest
1 голос
/ 28 декабря 2011

Я не могу придумать правильный способ работы с паролями в PHP.Я хэширую и использую соль, когда дело доходит до хранения, но я пытаюсь получить простой пароль

stripslashes(mysql_real_escape_string($_POST["password"]));

Я предполагаю, что некоторые пользователи будут использовать пароли с "! @ # $%^ ... "и т. д. Я могу представить себе пользователей, использующих пароль типа <b>lulz</b>"u'mad?.

Как я могу включить эти специальные символы в мою переменную пароля?

Ответы [ 2 ]

5 голосов
/ 28 декабря 2011

Вам не нужно выполнять какие-либо экранирование или зачистку. * Просто что-то вроде $hashed = my_favourite_hash($_POST["password"] . $salt) должно быть в порядке. Любая нормальная хеширующая функция должна возвращать строку буквенно-цифровых символов, ни один из которых не нуждается в экранировании.

В любом случае, вы должны использовать подготовленные операторы для ваших запросов SQL, чтобы не было шансов на внедрение SQL и т. Д.


* Предполагая, что у вас не включены магические кавычки (и вам действительно не следует!). † Замените предпочитаемую хэш-функцию на my_favourite_hash здесь.
3 голосов
/ 29 декабря 2011

Хранение пароля в текстовом формате чрезвычайно вредно. Вместо этого вы должны хранить хэш этого пароля в базе данных. Если пароль хешируется, нет ограничений на символы, которые он может содержать.

Для создания указанного хеша я бы рекомендовал вам использовать функцию crypt(). Предпочтительно использовать алгоритм SHA512 или BLOWFISH.

Кроме того, я бы порекомендовал вам прекратить использовать древние функции mysql_* (которые находятся в процессе устаревания) и узнать, как использовать PDO или MySQLi с подготовленные заявления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...