如何编写测试以确保 CSRF 未被禁用

how to write a test to make sure CSRF is not disabled

JAVA 8 + SPRING 5 + Junit - 无 Spring 启动

我有遵循 spring 配置的示例。我想写一个基本测试来测试配置,如果有人关闭 csrf 配置测试应该失败。

默认情况下 csrf 是启用的,这就是为什么您看不到任何 csrf 配置的原因。

提前感谢任何帮助。

@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(securedEnabled = true, prePostEnabled = true)
public class WebMVCSecurity extends WebSecurityConfigurerAdapter {

    @Bean
    @Override
    public AuthenticationManager authenticationManagerBean() throws Exception {
        return super.authenticationManagerBean();
    }

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.inMemoryAuthentication()
          .withUser("user1").password("{noop}user1Pass")
          .authorities("ROLE_USER");
    }

    @Override
    public void configure(WebSecurity web) throws Exception {
        web.ignoring().antMatchers("/resources/**");
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
          .authorizeRequests()
          .anyRequest()
          .authenticated()
          .and()
          .httpBasic();
    }
}

所有 spring 安全配置最终都会转换为 FilterChainProxy 对象,您可以自动连接然后遍历过滤器查找 CsrfFilter class 如果启用了 csrf。