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中添加相关依赖
1
2
3
4
5
6
7
8
9
10
11
|
<dependencies> <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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
@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字段
1
|
<input name= "${(_csrf.parametername)!}" value= "${(_csrf.token)!}" type= "hidden" > |
ajax中添加csrf的头
1
|
xhr.setrequestheader( "${_csrf.headername}" , "${_csrf.token}" ); |
github地址是 https://github.com/kabike/spring-boot-csrf
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://www.jianshu.com/p/3b8b92657ce9