Web安全相關(四):過多發布(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; }

    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM