使用ASP.net开发Web应用程序,在我的应用程序的登录页面中,我使用数据库中的值检查给定的用户名和密码,实际上我的username
是"Admin"
和{{ 1}}是password
但如果我提供"Password"
和"admin" as username
,则会接受用户名和密码。
我希望密码应该区分大小写。当我通过互联网时,我得到了一些点,比如更改"password" as password
的{{1}}属性.....我认为这是针对整个数据库....我不想为此设置整个数据库,我只想检查用户名和密码..
有可能,任何人都可以帮助我......
我想尝试
Collation
答案 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。