【问题标题】:CSRF protection only for requests with side effect (POST, DELETE, PUT)?CSRF 保护仅适用于具有副作用的请求(POST、DELETE、PUT)?
【发布时间】:2011-07-17 10:42:50
【问题描述】:

据我了解,跨站点请求伪造攻击“仅”用于更改服务器端的状态。

假设:

  • 我有一个 REST Web 应用程序,我确信 HTTP GET 请求不会改变我的应用程序持久状态(无副作用)
  • 我使用特定于会话的密钥来授权请求​​

我是否需要验证 GET 请求的会话特定密钥?

【问题讨论】:

    标签: security csrf csrf-protection


    【解决方案1】:

    这不是请求方法的问题(GET 和 POST 都可以更改持久状态),因为每个方法都可以被各种 CSRF 攻击向量利用。当您谈论“特定于会话的密钥”时,我假设您正在谈论同步器令牌模式(更多信息请参见 OWASP Top 10 for .NET developers part 5: Cross-Site Request Forgery (CSRF))。显然,这是为了防止浏览器在第三方的编排下代表您发出未经授权的请求。

    所以问题真的是“我的应用程序是否需要针对 CSRF 的保护?”听起来您的应用程序中的持久数据无论如何都没有变化,所以从表面上看,答案是“不”。您通常只会在 CSRF 攻击会产生不利影响的地方找到反请求伪造令牌,所以在我看来,这似乎是您无需担心的事情。

    【讨论】:

    • @Tryo Hunt:不,问题是:对于不改变我的应用程序状态的请求,我是否需要保护。 (我的应用会更改其状态 - 但仅限于 POST、DELTE 和 PUT 请求)。
    • 我回答了很长一段时间,最后一句话有你想要的 - “不”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-19
    • 2018-02-19
    • 1970-01-01
    • 2021-03-02
    • 1970-01-01
    • 2013-10-07
    • 2011-06-24
    相关资源
    最近更新 更多