我的ASP.NET MVC應用程序通過使用ValidateAntiForgeryToken屬性並調用Html.AntiForgeryToken以令牌值編寫隱藏的輸入元素,並將該令牌放入cookie中來防止CSRF攻擊。RequestVerificationToken cookie在響應中不存在
我的異常日誌報告出現了HttpAntiForgeryException,看起來像是從有效請求(Referrer看起來正確)觸發的。導致該異常的響應還包含帶有令牌值的Form字段中的__RequestValidationToken。但是,Request中缺少必要的Cookie,導致驗證失敗並引發異常。
我試圖想爲什麼這個cookie被丟失,都拿出了以下可能的原因:
- Cookies集合充滿了 域。 - 如果是這種情況 在這裏,我希望看到20/50餅乾 在每個請求(BTW所有 用戶代理是IE7和IE8)和 以某種方式cookie被丟棄。 我看到3到23個餅乾 在各種發生的 異常
- 餅乾數據限制已達到 達到。 - 這沒有發生。通過 查看日誌,我可以看到 Cookie收集很小。
- 在添加cookie之前,響應正在發回 。 - 不知道這個。手動 調用Reponse.Flush的頭 導致一個例外說明 cookies集合不能被修改 repsonse發送後。
- ?
在絕望中,我轉向在SO的人,並要求任何其他可能的原因,我可以調查這個缺失的cookie。
我看到完全相同的問題。它只發生在IE中,還有其他的cookie存在。當cookie存在時,我甚至看到了這個錯誤。一段時間以來它一直困擾我,我擔心我將不得不取消我的防僞保護。 – Josh 2011-04-06 20:53:53
有沒有發現這個問題的根源? – Ted 2012-12-15 20:37:47
用戶是否可以在瀏覽器上禁用Cookie? – stepanian 2010-01-21 06:48:37