Как использовать регистр с учетом поля пароля MySQL? - PullRequest
8 голосов
/ 12 декабря 2011

У меня есть логин пользователя, но пользователь может войти без учета регистра. Означает, что если ваш пароль «тестовый», то пользователь может войти с паролем «TEST».
Я хочу избежать аутентификации такого типа в моем поле пароля.

Ответы [ 2 ]

14 голосов
/ 12 декабря 2011

Самый простой способ - использовать ключевое слово binary в запросе:

SELECT /*fields*/ FROM table WHERE /* where clause */ BINARY password = "userpassword"

ИЛИ

используйте strcmp в своем запросе.Код PHP:

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

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

Полагаю, вы храните пароли в открытом виде. Это не только небезопасно, но и не нужно в большинстве ситуаций. Мой совет - хранить пароли в двух столбцах, например ::100100

password_salt VARCHAR(16)
password_hash VARCHAR(40)

Перед сохранением нового пароля возьмите пароль, предоставленный пользователем ($clear_password), создайте случайную строку ($salt) и используйте обе для создания хэша (sha1sum($salt . $clear_password). Сохраните и соль, и хеш, и удалите открытый пароль.

Чтобы проверить пароль, извлеките сохраненную соль для данного пользователя, сгенерируйте хеш и посмотрите, соответствует ли он хешу в БД.

Эта техника называется соленые пароли .

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