详解如何在spring boot中使用spring security防止CSRF攻击

网友投稿 736 2023-02-06


详解如何在spring boot中使用spring security防止CSRF攻击

CSRF是什么?

CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF。

CSRF可以做什么?

你这可以这么理解CSRF攻击:攻击者盗用了你的身份,以你的名义发送恶意请求。CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账......造成的问题包括:个人隐私泄露以及财产安全。

CSRF漏洞现状

CSRF这种攻击方式在2000年已经被国外的安全人员提出,但在国内,直到06年才开始被关注,08年,国内外的多个大型社区和交互网站分别爆出CSRF漏洞,如:NYTimes.com(纽约时报)、Metafilter(一个大型的BLOG网站),YouTube和百度HI......而现在,互联网上的许多站点仍对此毫无防备,以至于安全业界称CSRF为“沉睡的巨人”。

在一个spring boot项目中,需要防止CSRF攻击,可以只把spring security中的相关filter引入来进行.

在pom中添加相关依赖

org.sprinhttp://gframework.boot

spring-boot-starter-freemarker

org.springframework.security

spring-security-web

在app启动时,添加CsrfFilter

@SpringBootApplication

public class Application extends WebMvcConfigurerAdapter {

@Bean

public FilterRegistrationBean csrfFilter() {

FilterRegistrationBean registration = new FilterRegistrationBean();

registration.setFilter(new CsrfFilter(new HttpSessionCsrfTokenRepository()));

registration.addUhttp://rlPatterns("/*");

return registration;

}

public static void main(String[] args) {

SpringApplication.run(Application.class, args);

}

}

form中添加CSRF的hidden字段

ajax中添加CSRF的头

xhr.setRequestHeader("${_csrf.headerName}", "${_csrf.token}");

github地址是https://github.com/kabike/spring-boot-csrf


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java微信公众平台之获取地理位置
下一篇:spring boot + quartz集群搭建的完整步骤
相关文章

 发表评论

暂时没有评论,来抢沙发吧~