资讯专栏INFORMATION COLUMN

使用SpringSecurity处理CSRF攻击

Yumenokanata / 1088人阅读

摘要:漏洞现状跨站请求伪造,也被称为或者,通常缩写为或,是一种对网站的恶意利用。与攻击相比,攻击往往不大流行因此对其进行防范的资源也相当稀少和难以防范,所以被认为比更具危险性。是一种依赖浏览器的被混淆过的代理人攻击。

CSRF漏洞现状

CSRF(Cross-site request forgery)跨站请求伪造,也被称为One Click Attack或者Session Riding,通常缩写为CSRFXSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装成受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。
CSRF是一种依赖web浏览器的、被混淆过的代理人攻击(deputy attack)。

POM依赖

</>复制代码

  1. org.springframework.boot
  2. spring-boot-starter-freemarker
  3. org.springframework.security
  4. spring-security-web
配置过滤器

</>复制代码

  1. @SpringBootApplication
  2. public class Application {
  3. public static void main(String[] args) {
  4. SpringApplication.run(Application.class, args);
  5. }
  6. /**
  7. * 配置CSRF过滤器
  8. *
  9. * @return {@link org.springframework.boot.web.servlet.FilterRegistrationBean}
  10. */
  11. @Bean
  12. public FilterRegistrationBean csrfFilter() {
  13. FilterRegistrationBean registration = new FilterRegistrationBean<>();
  14. registration.setFilter(new CsrfFilter(new HttpSessionCsrfTokenRepository()));
  15. registration.addUrlPatterns("/*");
  16. registration.setName("csrfFilter");
  17. return registration;
  18. }
  19. }
在form请求中添加CSRF的隐藏字段

</>复制代码

在AJAX请求中添加header头

</>复制代码

  1. xhr.setRequestHeader("${_csrf.headerName}", "${_csrf.token}");
jQuery的Ajax全局配置

</>复制代码

  1. jQuery.ajaxSetup({
  2. "beforeSend": function (request) {
  3. request.setRequestHeader("${_csrf.headerName}", "${_csrf.token}");
  4. }
  5. });

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/73570.html

相关文章

  • SpringBoot+SpringSecurity+jwt整合及初体验

    摘要:进行下一项配置,为了区分必须加入。另起一行,以示尊重。这行代码主要是用于验证,后面再说。然后跑下接口,发现没问题,正常打印,说明主体也在上下文中了。说明这会上下文环境中我们主体不存在。所说以,主体数据生命周期是一次请求。 showImg(https://segmentfault.com/img/bVbtoG1?w=1600&h=900); 原来一直使用shiro做安全框架,配置起来相当...

    dackel 评论0 收藏0
  • SpringSecurity系列02】SpringSecurity 表单认证逻辑源码解读

    摘要:通过上面我们知道对于表单登录的认证请求是交给了处理的,那么具体的认证流程如下从上图可知,继承于抽象类。中维护这一个对象列表,通过遍历判断并且最后选择对象来完成最后的认证。发布一个登录事件。 概要 前面一节,通过简单配置即可实现SpringSecurity表单认证功能,而今天这一节将通过阅读源码的形式来学习SpringSecurity是如何实现这些功能, 前方高能预警,本篇分析源码篇幅较...

    zzir 评论0 收藏0
  • 前后端分离项目 — 基于SpringSecurity OAuth2.0用户认证

    摘要:前言现在的好多项目都是基于移动端以及前后端分离的项目,之前基于的前后端放到一起的项目已经慢慢失宠并淡出我们视线,尤其是当基于的微服务架构以及单页面应用流行起来后,情况更甚。使用生成是什么请自行百度。 1、前言 现在的好多项目都是基于APP移动端以及前后端分离的项目,之前基于Session的前后端放到一起的项目已经慢慢失宠并淡出我们视线,尤其是当基于SpringCloud的微服务架构以及...

    QLQ 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<