当前密码,新密码和确认新密码的验证器

时间:2013-01-07 15:19:36

标签: c# asp.net

使用microsoft Visual Studio 2010,

基本上我有3个文本框,进行3层编程。

文本框是当前密码,新密码和确认密码。

我可以知道我应该使用哪个验证器来验证:

1)用户输入当前密码,以便按下按钮提交。

2)用户可以选择是否要输入新密码,如果输入新密码,密码应该超过6个字符(不能使用!!@#$%^&*())等特殊字符。如果输入新密码,确认密码字段需要输入并与新密码进行比较才能按下按钮提交

1 个答案:

答案 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();
}