当前位置: 首页 > backend >正文

CSRF(跨站请求伪造)详解

目录

一、📖什么是CSRF

二、🔗漏洞利用过程

三、📑漏洞的前提条件

四、🔍常见漏洞发生位置

五、✅CSRF挖掘技巧

(一) 抓正常请求包进行初步判断

(二) Referer 绕过验证测试

(三) Token 缺失与二次验证缺失识别

六、⚠️漏洞危害

七、🔒CSRF漏洞防御


一、📖什么是CSRF

CSRF(Cross-Site Request Forgery)是指攻击者诱导用户在已登录某网站的情况下,执行非本意的操作(如转账、改密码等)。它依赖于用户已登录状态下浏览器自动携带 Cookie 的特性。

二、🔗漏洞利用过程

  1. 攻击者发现目标网站存在 CSRF 漏洞,关键操作接口未对请求来源进行身份校验。
  2. 攻击者构造包含恶意请求的 Payload(如自动提交的表单、恶意图片、JS 脚本等),并嵌入到钓鱼网页或第三方平台。
  3. 通过社交工程手段(如钓鱼邮件、社交消息、伪装广告等)引导用户点击该页面或链接。
  4. 用户在已登录目标网站(如银行)且持有有效 Cookie 的情况下访问该恶意页面,浏览器自动携带 Cookie 发起请求。
  5. 如果目标网站未对请求来源进行验证,则会误以为该请求是用户主动发起的。
  6. 请求被成功执行,导致敏感操作被触发(如转账、修改信息、授权操作等),用户在毫无察觉的情况下被攻击。

三、📑漏洞的前提条件

  1. ✅用户登录了目标网站,并且登录状态仍然有效(如 Cookie 未失效)
  2. ✅网站对关键操作的请求没有做身份校验
  3. ✅用户能被引诱点击恶意链接或访问恶意页面
  4. ✅网站使用 Cookie 认证,而非 Token认证方式

四、🔍常见漏洞发生位置

  • 修改用户信息:如邮箱、密码、绑定手机
  • 金融交易类接口:如转账、支付、充值
  • 内容发布/删除:如发帖、删除评论、点赞
  • 管理员操作接口:如添加用户、授权、配置

五、✅CSRF挖掘技巧

(一) 抓正常请求包进行初步判断

抓取关键操作(如POST)的正常请求包:

  • 缺少 Referer / Origin 字段
  • 且请求中无明显 CSRF Token 或防伪参数(如 _csrf, token, authenticity_token),
    👉 则接口极有可能存在 CSRF 漏洞

(二) Referer 绕过验证测试

请求中即使存在 Referer 字段,也可进行伪造测试:

  • 使用 Burp 修改 Referer 为第三方域名,或直接删除;
  • 若服务端仍返回 200 正常响应并执行业务操作,
    👉 基本可以确认该接口未校验请求来源,存在 CSRF 风险

(三) Token 缺失与二次验证缺失识别

在表单提交、按钮操作、GET 请求等处:

  • 若用户操作无 CSRF Token 校验机制
  • 未引入验证码 / 二次确认弹窗 / 图形验证等二次验证措施,
    👉 该接口高概率可被构造 CSRF Payload

六、⚠️漏洞危害

  • 被利用执行敏感操作(如转账、改密码)
  • 账户被篡改、信息泄露
  • 管理员权限被下发
  • 业务被滥用(如刷积分、批量点赞)
  • 信任损失、法律风险等内容

七、🔒CSRF漏洞防御

  • 添加验证码/密码
    • 打断请求的自动化流程,用户主动交互,防止CSRF自动执行敏感操作。
  • 双重Cookie验证
    • 通过比较Cookie和请求参数中的值,验证请求合法性。
  • 使用CSRF Token
    • Token是随机会话特定的,攻击者难以预测或伪造。
  • 检查Referer头
    • 通过验证请求来源,确保请求来自合法域名(参考同源策略)。
  • 使用SameSite Cookie属性
    • 限制Cookie在跨站请求中的发送,防止伪造请求。
http://www.xdnf.cn/news/12987.html

相关文章:

  • 《经济学原理》第九版 第九章国际贸易
  • 01Linux基础入门教程——从起源到核心概念
  • MySQL的日志
  • 深入理解Python内置模块及第三方库的使用与管理
  • Global Security Markets International Compliance知识点总结
  • 用 DeepSeek 创作一首属于自己的歌
  • HBM 读的那些事
  • Spring通用类型转换的实现原理
  • LangChain4j 1.x 核心源码剖析-基础篇
  • CMake基础:gcc/g++编译选项详解
  • 【GO性能优化】第十五章:性能优化艺术——揭秘Go程序的性能调优技巧
  • Redis : Hash形式
  • 【threejs】每天一个小案例讲解:题外话篇
  • 算法训练第十一天
  • Python应用变量与数据类型
  • 直角坐标系和斜角坐标系
  • 《PyTorch深度学习入门》
  • 深入剖析JVM垃圾回收,高并发场景JVM性能调优,内存泄露分析,以及如何避免OOM
  • Git 常见操作
  • 【PCIe总线】-- inbound、outbound配置
  • 小游戏不能玩了?最好用flash扩展程序
  • Deep-Live-Cam电脑部署避坑大全:环境搭建、常见错误排查与终极修复方案
  • Transceiver线速率配置
  • Redis实战-消息队列篇
  • 利用coze工作流制作一个自动生成PPT的智能体
  • 针对异构数据的联邦学习
  • Linux:守护进程(进程组、会话和守护进程)
  • OC学习—命名规范
  • 八、数据库恢复技术
  • 【Bluedroid】蓝牙启动之btm_ble_init源码分析