是否有任何框架內的方式來防止基於ASP .NET 4.0 Web表單的網站(而不是MVC)中的跨站點請求僞造(CSRF)?我看到框架生成__EVENTVALIDATION和__VIEWSTATE隱藏的表單字段,我已經通過machineKey和viewStateEncryptionMode =「Always」在我的web.config中加密了它們。但是,他們是否能夠實際防止CSRF攻擊尚不清楚。我測試了一個交叉發佈(通過表單的asp:Button中的PostBackUrl),我修改了__VIEWSTATE,__EVENTVALIDATION和__PREVIOUSPAGE(額外的交叉帖子)隱藏的加密表單字段,其他敏感表單字段仍然到達了我的代碼隱藏處理塊。我期待框架檢測修改後的加密字段並拋出錯誤。僅供參考,我將aspx保存爲.html,更改了這些隱藏的表單字段並重新使用了表單(現在放在.html中)來模擬攻擊者。所以我仍然可以發佈到我的敏感表單/字段,因爲(開始推測).html文件不通過ASP.NET處理引擎? (/結束猜測)任何防止跨站點請求僞造(CSRF)在ASP .NET 4.0(而不是MVC)內的框架內方式?
如果沒有這樣的框架內機制存在,是否有任何代碼片段快速原型/使用?我可以通過哈希用戶標識,甚至爲該c#變量設置一個表單隱藏變量,輕鬆創建每個用戶的唯一標識。但
- 的ASP.NET 4.0力學還設置,C#語言變量作爲一個cookie
和
- 檢查如果cookie值==在後續請求的形式值(有效性)
對我不清楚。
明白了。 salt,nonce或除了用戶ID之外的內容來生成進入隱藏表單字段的散列/簽名。謝謝。 – DeepSpace101