2013-01-07 201 views
-1

使用微软Visual Studio 2010,确认当前密码,新密码并确认新密码

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

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

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

1)用户已经输入当前的密码,以便他们可以按按钮提交。

2)用户可以选择是否要输入新密码,如果他们输入新密码,密码应超过6个字符(不能使用特殊字符,如[email protected]#$%^&*())。如果他们输入新密码,确认密码场需要输入,并用新的密码进行比较,然后才能按下按钮提交

+1

一个'CustomValidator'会给你很好的灵活性 – Matthew

+0

不允许“特殊字符”中的密码提出了一个大红旗我。你是不是真的以纯文本存储密码是你? –

+0

我试过字段和表达式验证器。试图找出如何使用自定义验证程序,但我不太明白它是什么关于 – user1861753

回答

0

TLDR:。 使用ASP.NET成员控制来管理您的密码,然后添加一个JavaScript函数来验证你的数据

密码是敏感数据,黑客总会试图窃取它们,所以程序员h大家找到了防止这种情况的方法。

http://www.codinghorror.com/blog/2007/09/rainbow-hash-cracking.html

http://www.securityfocus.com/blogs/262

如果你没有看过这些,有两个要点:

- 用户输入的不实际的口令存储:存储哈希值。散列是将输入字符串转换为不同输出的加密函数。这是一种单向转换:没有算法可以取得一个散列并将其转回到它的输入中,但相同的输入始终会产生相同的输出。 (这些文章描述了黑客用来尝试查找原始输入的聪明方法,以及防止黑客执行这些聪明事情的方法)。另外,不要将MD5用作散列机制。

- 密码学和安全性非常复杂,所以通常最好使用别人的代码。

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