使用microsoft Visual Studio 2010,
基本上我有3个文本框,进行3层编程。
文本框是当前密码,新密码和确认密码。
我可以知道我应该使用哪个验证器来验证:
1)用户输入当前密码,以便按下按钮提交。
2)用户可以选择是否要输入新密码,如果输入新密码,密码应该超过6个字符(不能使用!!@#$%^&*())
等特殊字符。如果输入新密码,确认密码字段需要输入并与新密码进行比较才能按下按钮提交
答案 0 :(得分:0)
<强> TLDR:强> 使用ASP.NET成员资格控件来管理您的密码。然后添加一个JavaScript函数来验证您的数据。
密码是敏感数据。黑客总是试图窃取它们,因此程序员已经找到了防止这种情况的方法。
http://www.codinghorror.com/blog/2007/09/rainbow-hash-cracking.html
http://www.securityfocus.com/blogs/262
如果您还没有阅读这些内容,则有两个要点:
1 - 不存储用户输入的实际密码:存储哈希值。哈希是一种加密函数,可将输入字符串转换为不同的输出。这是一种单向转换:没有算法可以将哈希值转换回它的输入,但是相同的输入将始终产生相同的输出。 (这些文章描述了黑客用来试图找到原始输入的聪明方法,以及防止黑客做这些聪明事情的方法)。另外,不要使用MD5作为哈希机制。
2 - 加密和安全性非常复杂,因此通常最好使用别人的代码。
ASP.NET附带了各种会员控件,可以为您进行密码管理和散列。您可以在此处了解有关它们的更多信息:
http://msdn.microsoft.com/en-us/library/ms178329(v=vs.100).aspx
基本上,.NET将为您构建您的登录/忘记密码/更改密码/创建用户页面。你不需要担心哈希或彩虹表或类似的东西,因为微软为你编写了所有代码。
关于客户端大小验证的问题,您需要执行一些JavaScript。当用户点击“提交”时,您可以通过向按钮添加OnClientClick="return validate();"
来调用JavaScript函数。然后,您需要创建一个validate()
函数(只要您更改OnClientClick
值,该函数也可以重命名)。这个功能应该有所帮助:
function validate()
{
if( $("#<%= PasswordControl1.ClientID %>").val() != $("#<%= PasswordControl2.ClientID %>").val())
{
alert("Your passwords don't match. Please enter them again.");
return false;
}
if( $("#<%= PasswordControl1.ClientID %>").val().length < 6 )
{
alert("Your password is too short. Please use a longer password.");
return false;
}
// use similar function to test for illegal characters in the password, but most sites will let you enter whatever characters you want (# . ! etc...)
document.forms[0].submit();
}