【问题标题】:What is the reason to disable csrf in spring boot web application?在 Spring Boot Web 应用程序中禁用 csrf 的原因是什么?
【发布时间】:2019-02-21 03:03:12
【问题描述】:

有很多教程展示了如何禁用 csrf,

csrf().disable()

(以及其他可能性,例如.properties.yml 等) 但无处解释他们为什么这样做?

所以我的问题是:

禁用它的现实原因是什么?
它提高了性能吗?

【问题讨论】:

  • 有人可以使用另一种不是csrf的令牌机制来验证请求,例如jwt,所以不会使用csrf令牌
  • 在教程中,这可能只是为了让教程更简单。
  • @benjaminc 好的,我明白了,但是为什么不忘记 csrf().disable() 呢? jwt 和标准 csrf 是否会以某种方式相互干扰或干扰?
  • @Raedwald,我想忘记 csrf().disable() 更简单)))
  • @arminvanbuuren 这会使请求更加冗长

标签: java spring spring-boot spring-security csrf


【解决方案1】:

禁用它的现实原因是什么?

Spring 文档建议:

我们的建议是对普通用户可以通过浏览器处理的任何请求使用 CSRF 保护。 如果您只创建非浏览器客户端使用的服务,您可能需要禁用 CSRF 保护。


它会提高性能吗?

它不应该影响性能。过滤器(或其他组件)将从请求处理链中删除,以使该功能不可用。

在 Spring Boot 应用程序中禁用 csrf 的原因是什么?

  1. 您正在使用另一种令牌机制。
  2. 您希望简化客户端和服务器之间的交互。

【讨论】:

    【解决方案2】:

    Spring 建议在为浏览器客户端服务时使用它,否则可能会被禁用:

    我们的建议是对普通用户可以通过浏览器处理的任何请求使用 CSRF 保护。如果您只创建非浏览器客户端使用的服务,您可能需要禁用 CSRF 保护。

    我会补充一点,即使您提供浏览器客户端,但它仅在内部使用,您可能希望/能够将其删除。

    【讨论】:

    • 所以我的问题的本质是:**为什么**我可能想要这样做?我如此渴望禁用它的原因是什么?为什么我不能忘记它?
    • 您不想为内部站点禁用 CSRF 保护。这将允许攻击者绕过防火墙,因为 CSRF 发生在您的浏览器中,该浏览器位于任何防火墙后面。我建议阅读docs.spring.io/spring-security/site/docs/5.3.x/reference/html5/…
    【解决方案3】:

    是的,如果您有其他无法隐藏的身份验证机制,则禁用它是安全的。对于内部企业应用程序,没有太大的顾虑。 我们不得不禁用它,因为它干扰了我们现有的身份验证机制。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-08
      • 2021-05-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多