使用SpringSecurity处理CSRF攻击的方法步骤
CSRF漏洞现状
CSRF(Cross-siterequestforgery)跨站请求伪造,也被称为OneClickAttack或者SessionRiding,通常缩写为CSRF或XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装成受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。
CSRF是一种依赖web浏览器的、被混淆过的代理人攻击(deputyattack)。
POM依赖
org.springframework.boot spring-boot-starter-freemarker org.springframework.security spring-security-web
配置过滤器
@SpringBootApplication publicclassApplication{ publicstaticvoidmain(String[]args){ SpringApplication.run(Application.class,args); } /** *配置CSRF过滤器 * *@return{@linkorg.springframework.boot.web.servlet.FilterRegistrationBean} */ @Bean publicFilterRegistrationBeancsrfFilter(){ FilterRegistrationBean registration=newFilterRegistrationBean<>(); registration.setFilter(newCsrfFilter(newHttpSessionCsrfTokenRepository())); registration.addUrlPatterns("/*"); registration.setName("csrfFilter"); returnregistration; } }
在form请求中添加CSRF的隐藏字段
在AJAX请求中添加header头
xhr.setRequestHeader("${_csrf.headerName}","${_csrf.token}");
jQuery的Ajax全局配置
jQuery.ajaxSetup({ "beforeSend":function(request){ request.setRequestHeader("${_csrf.headerName}","${_csrf.token}"); } });
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。