详解如何在spring boot中使用spring security防止CSRF攻击
2018-05-07 09:38
1026 查看
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中添加相关依赖
<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
@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="${(_csrf.token)!}" type="hidden">
ajax中添加CSRF的头
xhr.setRequestHeader("${_csrf.headerName}", "${_csrf.token}");
github地址是https://github.com/kabike/spring-boot-csrf
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
相关文章推荐
- 详解如何在Spring Boot项目使用参数校验
- 详解如何使用Jersey客户端请求Spring Boot(RESTFul)服务
- 详解Spring-Boot中如何使用多线程处理任务
- Spring Boot中如何使用断路器详解
- 详解Spring Boot 使用Spring security 集成CAS
- Spring Boot如何使用Spring Security进行安全控制(十一)
- 详解如何在SpringBoot里使用SwaggerUI
- Spring Boot如何使用Spring Security进行安全控制
- MVC中使用[ValidateAntiForgeryToken]防止CSRF 注入攻击
- 详解Spring Boot 使用Java代码创建Bean并注册到Spring中
- java使用jsp servlet来防止csrf 攻击的实现方法
- 如何防止ASP.NET网站遭受CSRF的攻击
- Spring-Boot中如何使用多线程处理任务
- spring-boot+mybatis开发实战:如何在spring-boot中使用myabtis持久层框架
- Spring Boot中使用Spring Security进行安全控制
- 跨域post 及 使用token防止csrf 攻击
- 如何在Spring Boot项目使用参数校验
- spring-boot+mybatis开发实战:如何在spring-boot中使用myabtis持久层框架
- springboot(四):thymeleaf使用详解
- Spring-Boot中如何使用多线程处理任务