我正在向控制器發佈表單並使其異步。我以隱藏的輸入形式存儲值。當點擊一個按鈕時,會調用一個javascript函數。它既從輸入字段獲取值,又從隱藏的輸入表單獲取值。然後它發送一個json字符串到控制器來處理這個請求。防止參數篡改並使用Javascript發送值的最佳方法?
控制器:
[HttpPost, Authorize]
public ActionResult DoSomeStuff (string leagueName, string doSomething) {
var service = new Service(_db);
var league = service.GetLeague(leagueName);
if (league != null) {
// validate doSomething
league.Action = doSomething;
_db.SaveChanges();
}
return new EmptyResult();
}
的Javascript:
$(document).on("click", "#submitForm", function() {
var json = {
"leagueName": $("input[name=leagueName]").val(),
"doSomething": $("input[name=doSomething]").val()
};
$.post("/Home/DoSomeStuff/", json, function() {
// async display something
});
}
HTML:
<input type="text" name="doSomething">
<button type="submit" id="submitForm"</button>
<input type="hidden" name="leagueName" value="@item.League.LeagueName" />
是什麼讓JavaScript抓取存儲值的最佳方式(更安全,然後方式輸入類型隱藏)?
如何防止某些用戶改變輸入類型的值 hidden field?
嗨,謝謝你的回答!如果我驗證此用戶是否有權訪問兩個聯賽,該怎麼辦?那麼是否無法查看聯盟名稱是否被更改? –
如果用戶有權訪問兩個聯賽。他可以更新/執行任何操作。你可以做的另一件事是保持獨特的聯盟'身份證'也在形式隱藏的領域。並使用它來驗證/從數據庫獲得聯賽。既然用戶也可以訪問這個聯盟,如果他願意,他可以改變這個ID。沒有什麼可以做的。如果您絕對想要阻止這種情況,請在GET操作中生成一個隨機字符串,並將其設置爲隱藏字段中的表單,然後在HttpPost上對其進行驗證。由於這是每個請求會話。你的第二個用戶不會知道這個祕密字符串。這是一個骯髒的方式,雖然 – Shyju
感謝您的幫助! :) –