我正在嘗試使用密碼加密和在asp-mvc中驗證進行簡單登錄表單。使用javascript和剃鬚刀驗證密碼
我有以下的登錄表單(部分代碼只):
@using (Html.BeginForm(null, null, FormMethod.Post, new { id = "loginForm" }))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<fieldset>
//some fields
...
// password
<div class="editor-label">
@Html.LabelFor(model => model.Password)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Password)
@Html.ValidationMessageFor(model => model.Password)
</div>
//some fields
...
}
另外,我的JavaScript代碼(我知道,加密是不是最安全的這樣但這是綽綽有餘以下我)
$("#loginForm").submit(function (e) {
var pass = $("#Password").val();
var passMD5 = CryptoJS.MD5(pass);
$("#Password").val(passMD5);
});
和C#視圖模型具有以下屬性
[Required(ErrorMessage = "Can't leave password field empty")]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
當某人輸入密碼時,我會加密密碼,然後將其發送到服務器,但隨後驗證會計算加密密碼。
如何對密碼字段執行一些驗證並將錯誤顯示在Html.ValidationMessageFor點中?
與你的問題有些不相干,但只是爲了讓你更新,**從不**依賴於客戶端哈希。 [它在發生服務器違規時非常危險](http://security.stackexchange.com/questions/53594/why-is-client-side-hashing-of-a-password-so-uncommon),即使它似乎符合客戶的利益。 –
'MD5'不加密,它是一個單向散列函數。另外,它只是用'MD5'來散列密碼並不被認爲是安全的。你需要使用一個更好的散列函數,實際上是一個帶有鹽和迭代的HMAC來減緩攻擊者的速度。 'password_hash',Bcrypt'或'PBKDF2'都是好的密碼散列函數。 – zaph