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

CSRF漏洞原理

文章目录

  • 一、同源策略
    • 1.应用
    • 2. 同源的比较
  • 二、跨站请求伪造
    • 1.漏洞成因
    • 2. 漏洞危害
    • 3. 攻击流程
    • 4. CSRF三要素
    • 5.漏洞类型
      • (1)GET型CSRF

一、同源策略

同源策略是浏览器的核心安全机制,主要限制不同源的文档或脚本对当前文档的读取、修改等操作,以防止恶意网站窃取数据(如Cookie、LocalStorage)或执行未授权操作(如表单提交、DOM操作)。

1.应用

常见应用场景:限制跨域AJAX请求、阻止跨域访问DOM元素、控制跨域Cookie共享等。
目的:隔离不同源的内容,保护用户数据安全和网站正常运行。

2. 同源的比较

“同源”指两个URL的协议、域名、端口三者完全相同,任一不同则为“不同源”。

示例(以http://example.com:80/path为基准):

  • 同源:http://example.com:80/path2(协议、域名、端口均相同)
  • 不同源:
    • https://example.com:80/path(协议不同:http vs https)
    • http://sub.example.com:80/path(域名不同:主域 vs 子域)
    • http://example.com:8080/path(端口不同:80 vs 8080)

二、跨站请求伪造

跨站请求伪造(CSRF)是一种利用用户已认证身份发起非预期操作的攻击。攻击者诱导用户在已登录目标网站的情况下,访问包含恶意代码的页面或点击链接,使浏览器在用户不知情时,以其身份向目标网站发送伪造请求(如转账、修改信息等),利用用户的登录状态绕过验证,完成未授权操作,危害用户数据安全或财产安全。

1.漏洞成因

CSRF漏洞的核心成因是目标网站对请求的来源合法性缺乏有效验证,仅依赖用户的登录状态(如Cookie)来确认请求权限。

  • 浏览器在发送请求时,会自动携带目标网站的Cookie(即使请求来自其他域名),导致网站无法区分请求是用户主动发起,还是第三方恶意诱导。
  • 若网站的关键操作(如转账、修改信息)未验证请求的真实来源(如Referer、CSRF Token等),攻击者即可利用这一特性伪造请求。

2. 漏洞危害

  • 用户权限滥用:攻击者以用户身份执行非预期操作,如转账、修改密码、绑定恶意手机号、发布不良内容等。
  • 数据安全风险:可能导致用户个人信息泄露、账号被盗用,甚至财产损失(如金融类网站)。
  • 网站信誉受损:用户因非自身操作遭受损失后,可能对网站的安全性产生质疑,影响平台公信力。

3. 攻击流程

  1. 用户登录目标网站:用户成功登录A网站(如银行网站),浏览器保存A网站的登录Cookie。
  2. 攻击者诱导操作:用户在未退出A网站的情况下,被诱导访问攻击者控制的恶意网站B(或点击包含恶意代码的链接)。
  3. 发送伪造请求:恶意网站B向A网站发送一个伪造的请求(如转账请求),浏览器自动携带用户在A网站的登录Cookie。
  4. 目标网站执行操作:A网站因验证了用户的登录状态(Cookie有效),误认为是用户主动操作,从而执行该伪造请求。

4. CSRF三要素

  • 操作
    你想让受害者做什么,转账、修改密码等。
  • 认证
    基于cookie的会话处理,因为要携带Cookie进行访问,其他认证字段是无法携带的,所以需要那个应用程序仅通过cookie进行会话处理。
  • 没有不可预测的参数
    因为要事先构造请求,所以不能含有不可预测的参数,比如密码等。

5.漏洞类型

根据请求的方式不同,可以分为GET型CSRF和POST型CSRF。

(1)GET型CSRF

  1. 受害者A(admin/password)登录了网站,网站里有修改密码的功能。
    在这里插入图片描述
  2. 攻击者B(smithy/passwrod)也登录网站获取网站里修改密码的参数,因为同样的网站同等级的用户里面的功能是一样的。
    在这里插入图片描述
  3. 攻击者B将构造好的链接发送给受害者A(如果网站存在存储型的XSS漏洞,还可以将链接插入进去),受害者A在没有退出网站的情况下点击了链接,则密码无意中被修改了。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
http://www.xdnf.cn/news/16662.html

相关文章:

  • CentOS7 安装和配置教程
  • USRP X410 X440 5G及未来通信技术的非地面网络(NTN)
  • Matplotlib(三)- 图表辅助元素
  • 经典算法题解析:从思路到实现,掌握核心编程思维
  • 天学网面试总结 —— 前端开发岗
  • Go 语言-->指针
  • 【2025/07/28】GitHub 今日热门项目
  • 【服务器知识】nginx配置ipv6支持
  • 大模型的开发应用(十九):AIGC基础
  • 【Spring WebFlux】 三、响应式流规范与实战
  • Java 笔记 serialVersionUID
  • ADB+Python控制(有线/无线) Scrcpy+按键映射(推荐)
  • 服务器查日志太慢,试试grep组合拳
  • 时序数据库选型指南:工业大数据场景下基于Apache IoTDB技术价值与实践路径
  • 5 分钟上手 Firecrawl
  • 【办公类-109-01】20250728托小班新生挂牌(学号姓名)
  • API产品升级丨全知科技发布「知影-API风险监测平台」:以AI重构企业数据接口安全治理新范式
  • 企业级日志分析系统ELK
  • Pycaita二次开发基础代码解析:点距测量、对象层级关系与选择机制深度剖析
  • 基于DeepSeek大模型和STM32的矿井“围压-温度-开采扰动“三位一体智能监测系统设计
  • 边缘计算+前端实时性:本地化数据处理在设备监控中的响应优化实践
  • vue element 封装表单
  • STM32时钟源
  • GaussDB as的用法
  • 【氮化镓】GaN同质外延p-i-n二极管中星形与三角形扩展表面缺陷的电子特性
  • 力扣 hot100 Day58
  • LeetCode 2044.统计按位或能得到最大值的子集数目:二进制枚举/DFS回溯(剪枝)
  • 介绍一下static关键字
  • IP协议解析:从寻址到路由
  • MCP协议全景解析:从工业总线到AI智能体的连接革命