试图在最新的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页面。 怎么预防呢?
答案 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。因此,你将获得两全其美。
注意:您可能需要进一步优化此配置以满足您的需求。