过多提交(Over Posting)
簡介
過多提交的內容相對比較簡單,因此,我只打算把原文中的一些關鍵信息翻譯一下。原文鏈接如下:
http://www.asp.net/mvc/overview/getting-started/getting-started-with-ef-using-mvc/implementing-basic-crud-functionality-with-the-entity-framework-in-asp-net-mvc-application#overpost
示例代碼下載:
https://code.msdn.microsoft.com/ASPNET-MVC-Application-b01a9fe8
?
分析
假設有一個類Student,它用于和數據庫建立映射,而且Student中的一個字段Secret你不想在頁面上修改它的值。
?
即使界面上沒有Secret對應的字段,hacker可以通過一些工具(如fildder)或者編寫js去發送請求來修改Secret的值。
?
如上圖,Secret的值會被修改為OverPost。
?
防止
在ASP.NET中,防止過多提交的方法大概有以下幾種:
1. 使用BindAttribute中的Include屬性,把需要映射的字段加到白名單。
public ActionResult Create([Bind(Include = "LastName, FirstMidName, EnrollmentDate")]Student student)
?
2. 使用BindAttribute中的Exclude屬性,把不允許映射的字段加到黑名單。
public ActionResult Create([Bind(Exclude = "Secret")]Student student)
?
3. 使用TryUpdateModel方法,驗證Model的時候,制定需要映射的字段。
if (TryUpdateModel(student, "",?new string[] { "LastName", "FirstMidName", "EnrollmentDate" }))
{
}
4. 定義一個新的類作為輸入參數
? public class StudentForm
? ? {
? ? ? ? ?public string LastName { get; set; }
? ? ? ? ?public string FirstMidName { get; set; }
? ? ? ? ?public DateTime EnrollmentDate { get; set; }
? ? }
相關文章:
跨站腳本攻擊(XSS)
跨站請求偽造(CSRF/XSRF)
開放重定向(Open Redirection)
[譯]構建現代Web應用的安全指南
原文地址:http://www.cnblogs.com/Erik_Xu/p/5497501.html
.NET社區新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注
總結
以上是生活随笔為你收集整理的过多提交(Over Posting)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ASP.NET Core quot;完整
- 下一篇: 全球首发免费的MySql for Ent