Asp.net MVC AntiForgeryToken不能通过HTTP GET起作用,因为它依赖于依赖于HTTP POST的cookie(它使用OWASP
XSRF 预防备忘单中介绍的“ Double Submit
cookies
”技术)。您还可以通过将as设置为httponly来另外保护发送给客户端的cookie,以使它们无法通过脚本进行欺骗。
在本文档中,您可以找到可用于防止XSRF的各种技术。您所描述的似乎属于方法1。但是,由于cookie没有随请求一起发送,因此在使用Ajax
HTTP
GET请求时如何在服务器上检索会话存在问题。因此,您还必须在操作的URL中添加会话标识符(也称为无cookie会话,更易于劫持)。因此,为了进行攻击,攻击者只需要知道正确的URL即可执行GET请求。
也许一个好的解决方案是使用来自用户SSL证书的某些密钥(例如certs指纹)存储会话数据。这样,只有SSL证书的所有者才能访问其会话。这样,您就不需要使用cookie,也不需要通过查询字符串参数发送会话标识符。
无论如何,如果您不想在Asp.net MVC中使用HTTP POST,则需要推出自己的XSRF保护。



