Spring Boot CSRF

时间:2016-12-02 10:26:21

标签: spring-boot csrf-protection

试图在最新的Spring Boot上实现CSRF保护。 互联网上的所有示例都基于用户登录和身份验证,我不需要。

我的网站没有任何要求身份验证的部分。 我想

  

1)休息请求来自网站内部。没有来自外部的直接请求允许wget。

     

2)必须从索引页面(/)

请求所有页面(路由)

pom.xml

中包含安全依赖项
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>

- application.properties中定义的用户(即使我不需要)

- 应用创建_csrf.token

- 使用&#34; configure&#34;创建扩展WebSecurityConfigurerAdapter的类。方法重写。

在&#34;配置&#34;中尝试了所有建议的过滤器。它没用,最后一片空白。

问题是Wget可以直接获取api页面。 怎么预防呢?

1 个答案:

答案 0 :(得分:1)

我已经快速整理了这个配置的POC:

@Configuration
@EnableWebSecurity
@SpringBootApplication
public class StackoverflowQ40929943Application extends WebSecurityConfigurerAdapter{

    public static void main(String[] args) {
        SpringApplication.run(StackoverflowQ40929943Application.class, args);
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .authorizeRequests()
                    .antMatchers("/**").permitAll();
    }

}

它的主旨是Spring Boot + Security将自动保护所有端点。在这里,我们明确允许对所有端点的请求。但是,Spring Boot + Security会自动配置开箱即用的CSRF。因此,你将获得两全其美。

注意:您可能需要进一步优化此配置以满足您的需求。

Full Example on GitHub