我已经开始在我的某些表单中使用AntiForgeryToken来防止跨站点请求伪造。然而,我得到一些奇怪的行为,只是想澄清这是一个错误还是只是我做错了什么。我在表单中使用Html.AntiForgeryToken()
调用。然后,我在表单发布的操作方法中使用[ValidateAntiForgeryToken]
属性。我现在不使用盐。
我的理解是Html.AntiForgeryToken()
生成名为__RequestVerificationToken
的隐藏输入和名为__RequestVerificationToken_Lw__
的Cookie,它们都应包含相同的值。
我遇到的行为是:
有人有任何想法吗?
答案 0 :(得分:2)
对于3号,您是否在CSRF场景中包含隐藏字段?
AntiForgeryToken的安全性在于隐藏的输入仅存在于您的域所服务的页面中,并且不能被其他域复制或捕获。如果你已经模拟了一个通过隐藏输入的测试,那么这不是一个有效的测试。
我建议你阅读Phil Haack的这篇文章:Anatomy of a Cross-site Request Forgery Attack