详解如何在springboot中使⽤springsecurity防⽌CSRF攻
击
CSRF是什么?
CSRF(Cross-site request forgery),中⽂名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF。
CSRF可以做什么?
你这可以这么理解CSRF攻击:攻击者盗⽤了你的⾝份,以你的名义发送恶意请求。CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚⾄于购买商品,虚拟货币转账......造成的问题包括:个⼈隐私泄露以及财产安全。
CSRF漏洞现状
CSRF这种攻击⽅式在2000年已经被国外的安全⼈员提出,但在国内,直到06年才开始被关注,08年,国内外的多个⼤型社区和交互⽹站分别爆出CSRF漏洞,如:NYTimes(纽约时报)、Metafilter(⼀个⼤型的BLOG⽹站),YouTube和百度HI......⽽现在,互联⽹上的许多站点仍对此毫⽆防备,以⾄于安全业界称CSRF为“沉睡的巨⼈”。
在⼀个spring boot项⽬中,需要防⽌CSRF攻击,可以只把spring security中的相关filter引⼊来进⾏.
在pom中添加相关依赖
<dependencies>
springboot中文<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
<!-- Security (used for CSRF protection only) -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
</dependency>
</dependencies>
在app启动时,添加CsrfFilter
@SpringBootApplication
public class Application extends WebMvcConfigurerAdapter {
@Bean
public FilterRegistrationBean csrfFilter() {
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(new CsrfFilter(new HttpSessionCsrfTokenRepository()));
registration.addUrlPatterns("/*");
return registration;
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
form中添加CSRF的hidden字段
<input name="${(_csrf.parameterName)!}" value="${(_ken)!}" type="hidden">
ajax中添加CSRF的头
xhr.setRequestHeader("${_csrf.headerName}", "${_ken}");
以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论