我在网上看到了一些笼统的声明,大意是您不需要对 GET 请求进行 CSRF 保护。
但是许多 Web 应用程序都有返回敏感数据的 GET 请求,对吧?那么你不想保护那些免受 CSRF 攻击吗?
我是否遗漏了什么,或者这些笼统的陈述是否假设 GET 请求提供的数据不重要?
使用带有 GET 的 CSRF 令牌获得的全面推荐示例:
- https://security.stackexchange.com/a/90027/5997
因此,如果一个网站保持标准并且只将“不安全”的操作作为 POST 来实现,那么这里只有 POST 请求是易受攻击的。
http://www.django-rest-framework.org/topics/ajax-csrf-cors/
- 确保“安全”HTTP 操作(例如 GET、HEAD 和 OPTIONS)不能用于更改任何服务器端状态。
这里的假设是,如果 GET 不修改状态,则不值得保护。
http://sakurity.com/blog/2015/03/04/hybrid_api_auth.html包含建议这种方法的代码行:
# 1) verify CSRF token for all non-GET requests