【发布时间】:2011-07-17 10:42:50
【问题描述】:
据我了解,跨站点请求伪造攻击“仅”用于更改服务器端的状态。
假设:
- 我有一个 REST Web 应用程序,我确信 HTTP GET 请求不会改变我的应用程序持久状态(无副作用)
- 我使用特定于会话的密钥来授权请求
我是否需要验证 GET 请求的会话特定密钥?
【问题讨论】:
标签: security csrf csrf-protection
据我了解,跨站点请求伪造攻击“仅”用于更改服务器端的状态。
假设:
我是否需要验证 GET 请求的会话特定密钥?
【问题讨论】:
标签: security csrf csrf-protection
这不是请求方法的问题(GET 和 POST 都可以更改持久状态),因为每个方法都可以被各种 CSRF 攻击向量利用。当您谈论“特定于会话的密钥”时,我假设您正在谈论同步器令牌模式(更多信息请参见 OWASP Top 10 for .NET developers part 5: Cross-Site Request Forgery (CSRF))。显然,这是为了防止浏览器在第三方的编排下代表您发出未经授权的请求。
所以问题真的是“我的应用程序是否需要针对 CSRF 的保护?”听起来您的应用程序中的持久数据无论如何都没有变化,所以从表面上看,答案是“不”。您通常只会在 CSRF 攻击会产生不利影响的地方找到反请求伪造令牌,所以在我看来,这似乎是您无需担心的事情。
【讨论】: