CSRF和Spring Security

时间:2015-09-14 19:04:39

标签: java angularjs spring rest 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上使用Spring Security,那么最佳配置是什么?因为在第二个配置中,它向我显示了一个登录的弹出窗口。在第一次配置中,它给了我

  

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

1 个答案:

答案 0 :(得分:1)

如果启用了CSFR,则取决于Spring Security版本和使用的配置类型。

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

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

解释了什么是CSFR on this page