springboot项目防止CSRF攻击
一、在pom中引入spring-security包
<!-- Security --> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-web</artifactId> </dependency>
二、在app启动时,添加CsrfFilter拦截
@SpringBootApplication public class Application extends WebMvcConfigurerAdapter { @Bean public FilterRegistrationBean csrfFilter() { FilterRegistrationBean registration = new FilterRegistrationBean(); registration.setFilter(new CsrfFilter(new HttpSessionCsrfTokenRepository())); registration.addUrlPatterns("/search");//指定拦截路由,*表示全部拦截 //registration.addUrlPatterns("/*"); return registration; } public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
三、form表单提交增加隐藏字段
<input name="${(_csrf.parameterName)!}" value="${(_csrf.token)!}" type="hidden">
四、ajax请求时填加CSRF的头
xhr.setRequestHeader("${_csrf.headerName}", "${_csrf.token}");
作者:IT民工郑小江
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。