Sql案例敏感性

时间:2012-04-21 17:17:14

标签: asp.net sql case-sensitive

使用ASP.net开发Web应用程序,在我的应用程序的登录页面中,我使用数据库中的值检查给定的用户名和密码,实际上我的username"Admin"和{{ 1}}是password但如果我提供"Password""admin" as username,则会接受用户名和密码。

我希望密码应该区分大小写。当我通过互联网时,我得到了一些点,比如更改"password" as password的{​​{1}}属性.....我认为这是针对整个数据库....我不想为此设置整个数据库,我只想检查用户名和密码..

有可能,任何人都可以帮助我......

我想尝试

Collation

4 个答案:

答案 0 :(得分:3)

尝试使用以下内容:

select username, password from users collate SQL_Latin1_General_Cp1_CS_AS

如评论中所述,您不应以纯文本格式存储密码。为什么不使用开箱即用的sql成员资格提供程序?

答案 1 :(得分:3)

你为什么要在数据库中这样做呢?密码不应该是数据库中的纯文本,出于安全原因应该加密。查询密码,然后进行解密并在应用程序本身进行比较......

答案 2 :(得分:3)

听起来你正在做一些可怕的错误。如果你为密码使用了一个不错的加密哈希函数,这根本就不是问题。

存储密码时,应对其进行哈希并将哈希值保存到数据库中 - 实际密码。

答案 3 :(得分:3)

Xander的回答解释了如何进行不区分大小写的比较。

但是,您确实不应该在数据库中存储明文密码。而是存储密码的哈希值。 SQL Server提供HashBytes函数来协助:

select HashBytes('SHA1', 'YourPassword');

有关详细说明,请参阅this answer