2013-01-07 202 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(); 
}