2014-07-16 44 views
0

我的项目中有一个登录表单,它接受用户名和密码进行验证并继续前进。以区分大小写的方式验证密码

我正在使用SQL Server作为后端。最初在我的登录页面中,如果我输入密码或小写,它会验证我的登录页面并继续执行项目。但是现在我想添加区分大小写的密码验证到我的密码文本框,以便它匹配数据库中密码字符的确切顺序。

如何将此验证添加到密码字段。可以将它添加到登录表单或SQL Server中吗?

+0

你如何验证你的密码字段? –

+0

密码是如何存储的,您是否计算了散列? – martinstoeckli

+0

密码字段使用存储在数据库中的数据进行验证。密码字段上未添加其他验证。 @Dhaval Patel –

回答

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 

Demo Link

+1

我不知道这是一个笑话还是一个错误的问题 – testydonkey

1

没有什么特别的事,但是你一定要避免:

  • 在明确
  • 存储密码使用一个简单的散列如没有一些盐的MD5(即散列时引入一定数量的可变性)

要做到这一点的一种方法是将帐户中最后一次密码更改的日期(例如64位整数)与散列一起存储(类似于SHA1应该是合理的)。当用户连接时,表单会被赋予一个数字(称为'salt'),表单会将键入的密码打包(使用UTF8等预定义编码),然后生成一个散列表,并将其发送到以base64为例(我的意思是你的密码字段可能只是一个包含base64编码散列的文本字段)。如果与服务器(数据库或应用程序)的通信受到保护,则密码可以通过线路传输没有问题。服务器比较这两个哈希值,如果它们匹配,那么就可以。

盐的原因是根据预先构建的MD5或SHA哈希码与您的密码数据库(如果恰巧是由黑客下载的)相匹配的字典,大大减缓了攻击速度。如果连接可以被黑客读取,它也会有所帮助,因为相同的预先建立的字典攻击可以在MD5哈希上传播。

0

正如其他人所说的,将密码存储为纯文本并不是一种好的做法。如果这就是你要求做的,

if(StringA == StringB) 

本身在C#中区分大小写。

相关问题