Как проверить регистрозависимый пароль в sql server08 - PullRequest
1 голос
/ 22 мая 2009

В моем приложении я посылаю пароль в базу данных, скажем, мой пароль - PassworD123. Теперь это дает мне правильное значение, но когда я использую пароль123 ... он также дает мне правильное значение. Так, как проверить чувствительные к регистру данные в SQL-сервере. Любой демонстрационный код поможет. Спасибо.

Ответы [ 4 ]

5 голосов
/ 22 мая 2009

Почему бы не использовать шифрование для хранения паролей в базе данных, такой как md5, потому что они будут возвращать различные хешированные версии, например

Md5 пароля123 = 482c811da5d5b4bc6d497ffa98491e38

Md5 PassworD123 = bbac8ba35cdef1b1e6c40f82ff8002ea

и если сравнить их 2, они явно отличаются.

Я думаю, что вы используете ASP, поэтому я не знаю, есть ли в нем встроенная функция md5 (), но в php она есть. Еще одна вещь, которую вы должны знать, это то, что, если вы храните пароли в базе данных, лучше хранить их, используя какое-то шифрование, которое невозможно отменить

2 голосов
/ 22 мая 2009

Вы можете использовать предложение COLLATE в своем выражении T-SQL.

Ex.

SELECT * FROM dbo.TableName WHERE Password = @ password COLLATE SQL_Latin1_General_CP1_CS_AS 
2 голосов
/ 22 мая 2009

Ну, краткий ответ - использовать сортировку с учетом регистра - более длинный ответ не хранить незашифрованные пароли в вашей базе данных !

2 голосов
/ 22 мая 2009

Непосредственный ответ на ваш запрос здесь: http://web.archive.org/web/20080811231016/http://sqlserver2000.databases.aspfaq.com:80/how-can-i-make-my-sql-queries-case-sensitive.html

Однако я думаю, что ваш подход к хранению / сравнению паролей немного неправильный. Вы не должны хранить пароль непосредственно в базе данных. По крайней мере, MD5 это или что-то.

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