我的项目中有一个登录表单,它接受用户名和密码来验证和继续。
我使用SQL Server作为后端。最初在我的登录页面中,如果我以大写字母或小写字母输入密码,它将验证我的登录页面并继续进行项目。但现在我想在我的密码文本框中添加区分大小写的密码验证,以便它与数据库中密码字符的确切顺序相匹配。
如何将此验证添加到密码字段。可以在登录表单或SQL Server中添加吗?
答案 0 :(得分:1)
没有什么特别要做,但你绝对应该避免:
一种方法是将帐户中最后一次密码更改的日期(例如64位整数)与散列一起存储(类似SHA1应该是合理的)。当用户连接时,表单被赋予数字(称为'salt'),表单将salt与输入的密码(使用预定义的编码,如UTF8)打包,并在其上生成哈希值,并在例如,wire as base64(我的意思是你的密码字段可能只是一个包含base64编码哈希的文本字段)。如果与服务器(数据库或应用程序)的通信是安全的,则密码可以在线路上传输没问题。服务器比较两个哈希值,如果匹配就可以了。
盐的原因是根据预先构建的MD5字典或SHA密码与您的密码数据库匹配(如果碰巧被黑客下载),大大减慢了攻击速度。如果连接可以被黑客读取,它也会有所帮助,因为相同的预建字典攻击可以对通过线路的MD5哈希进行处理。
答案 1 :(得分:0)
您可以使用正则表达式
^(?=(.*\d){2})(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z\d]).{8,}$
--------- --------------------- --------------- -----
| | | |->match 8 or more characters
| | |->match further only if theres anything except letter or digit
| |->match further only if there is an upper-lower case letter
|
|->match further only if there are two digits any
where
答案 2 :(得分:0)
正如其他人所提到的,将密码存储为纯文本并不是一个好习惯。如果这是你被要求做的,
if(StringA == StringB)
本身在C#中区分大小写。