Web安全相關(四):過多發布(Over Posting)

來源:互聯網
上載者:User

標籤:簡單   ldd   asp.net   代碼   修改   驗證   使用   nbsp   lan   

簡介

  過多發布的內容相對比較簡單,因此,我只打算把原文中的一些關鍵資訊翻譯一下。原文連結如下:

  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; }

    }

 

Web安全相關(四):過多發布(Over Posting)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.