【问题标题】:CSRF and Spring SecurityCSRF 和 Spring Security
【发布时间】:2015-12-10 21:12:35
【问题描述】:

我一直在尝试掌握 Spring Security,但总是对初始配置感到困惑。在少数教程中,我发现 CSRF 被禁用,而在少数教程中我发现它已启用。

在一些论坛上,它被写成禁用它很好,而在一些教程中,很少有人提到禁用 csrf 不是一个好习惯。

我的意思是为什么我们需要 CSRF?使用 CSRF 的原因是什么?如果我们禁用它会怎样?为什么不应该禁用它?

http.csrf()
.csrfTokenRepository(csrfTokenRepository()).and()
.addFilterAfter(csrfHeaderFilter(), CsrfFilter.class)

http.csrf().disable()
.exceptionHandling().and()
.anonymous().and()
.servletApi().and()
.headers().cacheControl().and()
.authorizeRequests()

如果我将 Spring Security 与 REST 结合使用,最佳配置是什么?因为在第二个配置中,它向我显示了一个用于登录的弹出窗口。在第一个配置中它给了我

(未找到预期的 CSRF 令牌。您的会话是否已过期?)

【问题讨论】:

    标签: java angularjs spring rest spring-security


    【解决方案1】:

    是否启用 CSFR 取决于使用的 Spring Security 版本和配置类型。

    在 Spring Security 4 之前,当使用 XML 配置时,CSFR 将被禁用,而当使用基于 Java 的配置时,它将被启用。从 Spring Security 4 开始,默认情况下为基于 XML 和 Java 的配置启用 CSFR。

    您是否需要 CSFR,如果您有面向公众的网站或 API,我会说是的。您禁用的每个安全层都会使您的应用程序更容易受到攻击。

    什么是CSFR解释on this page

    【讨论】:

    • 你没有回答我的其他问题如果我使用带有 REST 的 Spring Security,最好的配置是什么?
    猜你喜欢
    • 2018-03-05
    • 2016-01-12
    • 2014-03-18
    • 2020-03-13
    • 2014-12-17
    • 2014-09-30
    • 2018-08-05
    • 2016-07-21
    相关资源
    最近更新 更多