![](/img/trans.png)
[英]Afterwards Model Binding in ASP.NET MVC: How to convert QueryString values into a view model?
[英]How to ignore model binding from querystring in MVC
我有表單提交做回發。 控制器動作接受這些值作為參數。 例如:EditProduct(int productid,字符串productname)。
productid由表單的隱藏字段提供。 我如何確保用戶不會調用此操作並將此產品ID和名稱作為queystring傳遞,並且模型綁定將綁定值並將產品保存在數據庫中?
我發現最安全的方法是檢查用戶是否有權編輯產品。 在執行操作中的任何數據庫更新之前,請選中此復選框,並且無需擔心用戶會修改隱藏值。
如果要強制用戶轉到您的網頁來執行帖子,則可以使用Html.AntiForgeryToekn() 。 但是,用戶仍然可以訪問該網站,查看防偽令牌並將其與他們的請求一起傳遞。
您可以在服務器上使用密鑰對產品ID進行簽名(使用HMACSHA512),然后在回發中驗證簽名。
您可能希望在簽名時包括當前日期和/或用戶或會話ID,以防止重放攻擊。
您應該在EditProducts
操作中實施適當的訪問控制,以便嘗試編輯其他產品將產生錯誤。
試圖阻止用戶修改查詢字符串將無濟於事 。
我建議您在模型中添加一個rowversion(時間戳)列。 (如果可以對模型進行更改)這比簽名或哈希操作容易得多。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.