2011-06-09 105 views
0
public class ChangePasswordObject { 

    [Required] [DataType(DataType.EmailAddress)] 
    string email; 
    [Required] 
    string authorization_code; 
    [Required] [DataType(DataType.Password)] 
    string password; 
} 

回答

6

應該容易,因爲:

[Required] 
[DataType(DataType.Password)] 
[StringLength(20, MinimumLength = 3)] 
string password; 

的第一個參數StringLength最大長度。


現在對於我的$ 0.02:

正如在評論中指出,在您的密碼字段提供最小和最大限制講述了一個攻擊者有很多關於你的密碼要求,他們可以在此基礎上優化他們的攻擊信息。

另外,要小心存儲和傳遞明文密碼 - 你應該使用單向加密算法和隨機鹽儘快對它們進行散列和散列。驗證密碼應該重複用戶輸入的加密,使用已知的salt並比較結果散列。如果您使用明文密碼進行的操作多於發佈密碼,則可能需要重新考慮安全策略。

+0

謝謝!完美無缺地工作。 – 2011-06-09 20:21:28

+0

除了a)請不要設置密碼的最大長度(至少不要超過100個),並且b)根本不存儲密碼!你需要散列和加鹽,否則你會非常容易疏忽。 – 2015-08-21 19:00:26

+0

@GeorgeMauer:我絕對同意你的建議,並可能更新我的答案,包括一些額外的指針。 – 2015-08-21 19:15:08

1

將StringLength屬性添加到密碼字段。示例here - 位於頁面的底部。

0
[MembershipPasswordAttribute(MinRequiredNonAlphanumericCharacters = 4, MinRequiredPasswordLength = 7, MinNonAlphanumericCharactersError = "Alpha", MinPasswordLengthError = "MIN Length")] 
[DataType(DataType.Password)] 
public string Password { get; set; } 

[System.ComponentModel.DataAnnotations.Compare("Password",ErrorMessage ="{0} and {1} should be same")] 
public string ComparePassword { get; set; }