什么时候可以禁用 csrf 保护

Posted

技术标签:

【中文标题】什么时候可以禁用 csrf 保护【英文标题】:When can I disable csrf protection 【发布时间】:2020-07-05 19:03:20 【问题描述】:

在这么多教程中我找到了一行

  http
    .csrf().disable();

我们什么时候可以做到?我知道这次攻击是关于什么的,但是我们什么时候可以确定我们不需要这种类型的保护呢?例如,当我们创建 REST api 时,React 应用程序将使用该 API。它还取决于我们使用的其他安全形式吗?比如智威汤逊?

【问题讨论】:

这里回答了类似的问题:***.com/questions/52363487/… 【参考方案1】:

当有微服务到微服务调用时,不需要csrf保护。CSRF只是浏览器的问题(以及在移动应用程序中嵌入浏览器的应用程序,如Web视图),因此无需实现机器对机器通信的保护,因为它们使用 HTTP 客户端库和硬编码的 URL,因此无法像使用普通浏览器(例如使用 img 标签)那样让它们“浏览”易受 CSRF 攻击的端点。

就普通客户端而言,即使您的微服务可以从外部访问,也不应该成为问题,因为它的身份验证系统应该只允许授权客户端(其他微服务、移动应用等),即使客户被欺骗访问其 API 端点,它不应该拥有正确的凭据来对其进行身份验证(除非您面向客户的 API 密钥或 cookie 可以以某种方式用于内部微服务,这是一个坏主意,您应该防止这种情况发生)。

【讨论】:

以上是关于什么时候可以禁用 csrf 保护的主要内容,如果未能解决你的问题,请参考以下文章

不禁用 CSRF 保护的 Rails API 设计

如何禁用我网站中特定页面的 csrf 保护?

禁用 Ajax 调用的 CSRF 保护 - 它有多糟糕?

在 ajax 提交时禁用 symfony 2 csrf 令牌保护

如何仅在某些情况下禁用 Django 的 csrf 保护?

Rails 3.2 - 为控制器操作禁用 CSRF 保护