SpringSecurity中的CSRF解读

2023-05-16

SpringSecurity中的CSRF解读

从刚开始学习SpringSecurity时,在配置类中一直存在这样一行代码:http.csrfo.disable()

如果没有这行代码导致用户无法被认证。这行代码的含义是:关闭 csrf 防护。

什么是CSRF

CSRF (Cross-site request forgery) 跨站请求伪造,也被称为"OneClick Attack” 或者 Session Riding。通过伪造用户请求访问受信任站点的非法请求访问。

跨域:只要网络协议,ip 地址,端口中任何—个不相同就是跨域请求。

客户端与服务进行交互时,由于 http 协议本身是无状态协议,所以引入了cookie进行记录客户端身份。在cookie中会存放session 用来识别客户端身份的。

在跨域的情况下,session id 可能被第三方恶意劫持,通过这个session id 向服务端发起请求时,服务端会认为这个请求是合法的,可能发生很多意想不到的事情。

那么,究竟什么是跨站请求伪造,面对这个问题我们又该如何应对呢?

从安全的角度来讲,你可以将 CSRF 理解为一种攻击手段,即攻击者盗用了你的身份,然后以你的名义向第三方网站发送恶意请求。我们可以使用如下所示的流程图来描述 CSRF:

具体的流程如下:

  • 用户浏览并登录信任的网站 A,通过用户认证后,会在浏览器中生成针对 A 网站的 Cookie(session id);

  • 用户在没有退出网站 A 的情况下访问网站 B,然后网站 B 向网站 A 发起一个请求;

  • 用户浏览器根据网站 B 的请求,携带 Cookie 访问网站 A;

  • 由于浏览器会自动带上用户的 Cookie,所以网站 A 接收到请求之后会根据用户具备的权限进行访问控制,这样相当于用户本身在访问网站 A,从而网站 B 就达到了模拟用户访问网站 A 的操作过程。

显然,从应用程序开发的角度来讲,CSRF 就是系统的一个安全漏洞,这种安全漏洞也在 Web 开发中广泛存在。

基于 CSRF 的工作流程,进行 CSRF 保护的基本思想就是为系统中的每一个连接请求加上一个随机值,我们称之为 csrf_token。这样,当用户向网站 A 发送请求时,网站 A 在生成的 Cookie 中就会设置一个 csrf_token 值。而在浏览器发送请求时,提交的表单数据中也有一个隐藏的 csrf_token 值,这样网站 A 接收到请求后,一方面从 Cookie 中提取出 csrf_token,另一方面也从表单提交的数据中获取隐藏的 csrf_token,将两者进行比对,如果不一致就代表这就是一个伪造的请求。

详细内容:Spring Security专栏(关于如何实现 CSRF 保护) - 掘金 (juejin.cn)

Spring Security中的CSRF

从Spring Security4开始CSRF防护默认开启。默认会拦截请求。进行CSRF处理,CSRF为了保证不是其他第三方网站访问,要求访问时携带参数名为 _csrf 值为 token(token 在服务端产生) 的内容,如果token和服务端的token匹配成功,则正常访问。

编写控制器方法

编写控制器方法,跳转到 templates 中login.html 页面。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SpringSecurity中的CSRF解读 的相关文章

随机推荐

  • 转置矩阵、对称矩阵、反对称矩阵以及向量的反对称矩阵

    一 转置矩阵 假设矩阵 A 如下表示 xff1a 则其转置矩阵表示为 xff1a 二 对称矩阵 若矩阵 B 与其转置矩阵相等 xff0c 则称矩阵 B 为对称矩阵 xff0c 如 xff1a 三 反对称矩阵 若矩阵 C 与其转置矩阵取负后相
  • Adobe Acrobat用鼠标滚轮浏览时滚动速度很慢解决办法

    点击 视图 页面显示 启用滚动
  • atan()函数与atan2()函数

    atan函数与atan2函数 一 atan 函数1 描述2 声明3 参数4 返回值5 头文件 二 atan2 函数1 描述2 声明3 参数4 返回值5 头文件 一 atan 函数 1 描述 表示 x 的反正切 2 声明 span class
  • vscode调整代码大小

    vscode调整代码大小 一 vscode整体放大二 只放大右侧的代码 一 vscode整体放大 依次点击 查看 外观 放大 xff0c 或者快捷键 Ctrl 43 61 二 只放大右侧的代码 依次点击 文件 首选项 设置 xff0c 或者
  • 计算机网络协议

    计算机网络协议 一 OSI七层协议二 TCP IP协议三 OSI与TCP IP总结四 数据的单位 一 OSI七层协议 OSI分层名称作用7应用层针对特定应用的协议 为应用程序提供服务并规定应用程序中通信相关的细节 包括文件传输 电子邮件 远
  • 删除 Microsoft Office Word 中页眉、页脚的横线

    一 问题描述 xff1a 上面有一条横线 二 解决办法 点击 开始 xff0c 再点击 样式 右下角的箭头 xff0c 或者直接快捷键 Alt 43 Ctrl 43 Shift 43 S 再点击 管理样式 打开之后 xff0c 根据自己的需
  • Latex画三线表

    Latex代码格式模板 begin span class token punctuation span table span class token punctuation span small span class token opera
  • VS Code(Visual Studio Code)中文注释乱码解决办法

    注释乱码 解决办法 xff1a 将设置中的 34 files autoGuessEncoding 34 项勾选上即可 结果
  • 显示远程计算机或设备将不接受连接的解决办法

    当你的电脑浏览器不能正常上网时 xff0c 显示 点击网络诊断 xff0c 显示远程计算机或设备将不接受连接 此时 xff0c 不要慌 解决办法 xff1a 1 右键点击左下角开始 xff0c 点击运行 xff0c 输入inetcpl cp
  • 错误报告规范

    PR 类型包括如下 类型范例BugFix BugFix 修正某个坏掉的功能HotFix HotFix 紧急修正某个奇怪的东西CS CS 修正 Coding StyleFeature Feature 写了某个新功能Update Update
  • Windows中使用7-Zip压缩或解压缩时报错解决:客户端没有所需的特权

    1 报错 2 解决办法 点击开始 xff0c 查看7 Zip 软件文件夹或者直接找到7 Zip 软件的安装路径 xff0c 电击以管理员身份运行 找到需要压缩或者解压缩的文件的位置 xff0c 完成 xff01
  • Spring Bean的配置方式

    在配置前先了解bean元素的相关属性 xff1a 作为 Spring 核心机制的依赖注入 xff0c 改变了传统的编程习惯 xff0c 对组件的实例化不再由应用程序完成 xff0c 转而交由Spring 容器完成 xff0c 在需要时注入应
  • 2022年6月26日 VSCode远程SSH连接遇到的问题及解决

    前期准备 已配置完成服务端sshd启动 xff0c 客户端产生ssh公钥 私钥 xff0c 将公钥上传至服务端 xff0c 以及ssh端口转发等 xff0c 客户端能正常连接到服务端 Linux ssh隧道详解 图解SSH原理 使用VSCo
  • 计算三角形面积(采用struts2的MVC模式)

    输入界面 xff08 注意input中的name要与模型中的属性及action中的属性名一致 xff09 lt 64 page language 61 34 java 34 contentType 61 34 text html chars
  • Ranger 终端文件管理器

    文章目录 Linux下的Ranger使用Ranger 介绍下载使用启动基本操作 踩过的坑Reference Linux下的Ranger使用 Ranger 介绍 ranger是一款好用的终端文件管理器 下载 pip install range
  • Ubuntu16.04完美安装微信(ukylin优麒麟系统版微信WeChat)

    Ubuntu下有很多种安装微信的方式 xff0c 但是很多都不太好用 xff0c 我之前用的是通过deepwine的方式安装的微信 xff0c 经常无法正常输入中文 xff0c 脑阔疼 然后又在网上找到了ubuntukylin xff08
  • idea提示Your idea evaluation has expired. Your session will be limited to 30 minutes

    今天打开IDEA写代码突然提示 xff1a Your idea evaluation has expired Your session will be limited to 30 minutes 翻译如下 xff1a 评估已过期 xff0c
  • (linux)CentOS -yum 安装jdk1.8

    1 搜索jdk安装 xff1a yum search java grep jdk 2 安装jdk 1 8 xff1a yum install java 1 8 0 openjdk 查看是否安装成功 xff1a java version 3
  • 解决方法 Uncaught SyntaxError: Unexpected token ,

    这里出现了一个中文输入环境下的逗号 xff0c 改正过来即可 那么很多人还会有其他的一些错误 xff0c 排查的步骤可以这样做 xff1a 1 先去检查一下语法错误 2 检查后端返回的json格式数据 xff0c 是否是正确的json格式
  • SpringSecurity中的CSRF解读

    SpringSecurity中的CSRF解读 从刚开始学习SpringSecurity时 xff0c 在配置类中一直存在这样一行代码 xff1a http csrfo disable 如果没有这行代码导致用户无法被认证 这行代码的含义是 x