我正在尝试使用每个表单中的隐藏密钥和特殊的临时cookie来保护我的.NET网站免受CSRF攻击,因此当用户POST表单时,我可以比较临时cookie密钥和隐藏密钥。形式。
但我不想使用Session
或其他共享对象来保存这些临时密钥,所以我想出了这样的方法:
App确保:
否则,拒绝POST并显示错误。
你看到任何缺陷吗?
亲切的问候。
答案 0 :(得分:2)
为什么不使用内置的ViewState userkey?使用用户的登录名填充它,您就完成了。然而,这不会到期。
如果您没有经过身份验证的用户或因为您不喜欢viewstate而不喜欢这种方法,那么您可以编写一个HTTP模块,其中插入一个隐藏的表单字段,就像我在{{3}上编写和发布的字段一样你应该能够调整到期日。
答案 1 :(得分:2)
您描述的策略通常起作用,称为“Double Submitting Cookies”。 但是您应该了解一些关于
的事情