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

【Web安全】csrf、ssrf和xxe的区别

CSRF、SSRF 和 XXE 是三种不同类型的网络安全漏洞,它们的原理、攻击目标、利用方式和危害场景均有显著区别。以下从核心定义、原理、场景等维度详细对比三者的差异。

一、核心定义与原理对比

漏洞类型

全称

核心定义

核心原理

CSRF

跨站请求伪造

攻击者诱导用户在已登录的情况下,通过浏览器向目标服务器发送恶意请求,冒充用户执行操作。

利用用户的会话状态(如 Cookie),让服务器误以为请求是用户主动发起的,从而执行未授权操作。

SSRF

服务器端请求伪造

攻击者通过构造恶意请求,诱导服务器主动向指定目标(内网 / 本地 / 第三方服务)发起请求,窃取信息或攻击内网。

服务器存在未过滤的 “请求转发” 功能(如从 URL 加载资源),攻击者控制请求目标,利用服务器权限访问受限资源。

XXE

XML 外部实体注入

攻击者通过构造包含恶意外部实体的 XML 输入,诱导 XML 解析器加载外部资源,导致文件泄露或内网访问。

XML 解析器未禁用外部实体(External Entity),解析包含<!ENTITY>

定义的 XML 时,会执行外部资源加载(如本地文件、内网 URL)。

二、关键区别详解

1. 攻击主体与发起者不同
  • CSRF:攻击由客户端(用户浏览器) 发起。攻击者通过恶意网页、邮件等诱导用户访问,利用用户的浏览器向目标服务器发送请求(用户此时已登录,持有合法会话)。
    例:用户登录网银后,访问攻击者的恶意网站,网站自动发送转账请求,网银服务器因用户已登录而执行操作。
  • SSRF:攻击由服务器端发起。攻击者通过前端输入(如 URL 参数)构造恶意请求,服务器接收到请求后,会按攻击者的指令主动向指定目标(如内网 IP、本地服务端口)发起请求,并将结果返回给攻击者。
    例:某网站有 “根据 URL 加载图片” 功能,攻击者输入http://192.168.1.1:3306(内网 MySQL 端口),服务器会主动访问该内网地址,攻击者可通过返回结果探测内网服务。
  • XXE:攻击由XML 解析器触发。攻击者向接受 XML 输入的应用提交包含恶意外部实体的 XML 数据,应用的 XML 解析器在解析时会加载外部实体指向的资源(如本地文件、内网 URL),并将内容返回给攻击者。
    例:某 API 接受 XML 格式数据,攻击者提交包含<DOCTYPE foo [<!ENTITY xxe SYSTEM "file:///etc/passwd">]>的 XML,解析器会读取/etc/passwd并返回内容。
2. 攻击目标与场景不同
  • CSRF:目标是服务器上的用户权限操作,仅能执行用户权限范围内的操作(如转账、改密码、发消息等),无法直接获取数据,主要危害是 “越权执行操作”。
    常见场景:社交平台自动发动态、电商平台下单、后台权限操作等。
  • SSRF:目标是服务器可访问的资源,包括:
    • 内网服务(如数据库、Redis、后台管理系统);
    • 本地服务(如localhost:8080的后台接口);
    • 第三方服务(如云存储 API)。
      危害:探测内网拓扑、窃取内网数据、攻击内网服务(如 Redis 未授权访问)、绕过防火墙等。
  • XXE:目标是XML 解析器可访问的资源,包括:
    • 本地文件(如/etc/passwd、配置文件);
    • 内网 URL(如访问内网 Web 服务、数据库);
      危害:读取敏感文件、探测内网服务、触发命令执行(结合其他漏洞时)等。
3. 利用条件不同
  • CSRF
    • 用户需已登录目标服务器(持有有效会话 Cookie);
    • 目标操作可通过 HTTP 请求触发(如 GET/POST);
    • 服务器未验证请求的真实性(如无 CSRF Token、Referer 检查)。
  • SSRF
    • 服务器存在 “请求转发” 功能(如从 URL 加载数据、远程图片、API 调用);
    • 服务器对用户输入的目标 URL 未做严格过滤(如未禁止内网 IP、file:///gopher://等协议)。
  • XXE
    • 应用接受 XML 格式输入(如 API 接口、文件上传);
    • XML 解析器未禁用外部实体(ENTITY)、参数实体(%ENTITY)或 DTD(文档类型定义);
    • 解析结果可能被攻击者获取(如错误信息泄露、返回内容包含实体数据)。
4. 典型攻击流程不同
  • CSRF 攻击流程
    1. 用户登录 A 网站(目标服务器),获取会话 Cookie;
    2. 攻击者诱导用户访问恶意网站 B;
    3. 网站 B 向 A 网站发送恶意请求(如转账),请求携带用户的 Cookie;
    4. A 网站验证 Cookie 有效,执行请求操作。
  • SSRF 攻击流程
    1. 服务器提供 “根据 URL 获取资源” 功能(如/fetch?url=xxx);
    2. 攻击者构造恶意 URL(如http://127.0.0.1:6379,Redis 本地端口);
    3. 服务器接收到请求,按 URL 向目标发起访问;
    4. 服务器将访问结果返回给攻击者,或因访问行为导致内网安全问题。
  • XXE 攻击流程
    1. 应用接受 XML 输入(如提交订单、数据同步);
    2. 攻击者提交包含外部实体的 XML(如<DOCTYPE ... [<!ENTITY xxe SYSTEM "file:///etc/passwd">]>);
    3. XML 解析器加载外部实体,读取/etc/passwd内容;
    4. 解析结果通过响应或错误信息泄露给攻击者。
5. 危害与防御措施不同

漏洞类型

主要危害

核心防御措施

CSRF

越权执行操作(转账、改配置等),无数据窃取能力。

1. 添加 CSRF Token 并验证;2. 检查 Referer/Origin;3. 关键操作需二次验证(如密码)。

SSRF

探测内网拓扑、窃取内网数据、攻击内网服务(如 Redis 未授权)、绕过防火墙。

1. 限制请求协议(仅允许 http/https);2. 过滤内网 IP(如 10.0.0.0/8、127.0.0.1);3. 禁用危险协议(gopher、file)。

XXE

读取本地敏感文件、访问内网服务、触发命令执行(间接)。

1. 禁用 XML 外部实体(如 libxml2 的LIBXML_NOENT

禁用);2. 禁止 DTD 解析;3. 使用安全的 XML 解析库(如 Python 的 defusedxml)。

三、总结:核心差异一句话概括

  • CSRF:“借用户的手,干用户能做的事”(客户端冒充用户操作);
  • SSRF:“借服务器的手,访问服务器能到的地方”(服务器主动访问恶意目标);
  • XXE:“借 XML 解析器的手,读解析器能读的资源”(利用 XML 解析加载外部实体)。


三者均属于注入类或伪造类漏洞,但因攻击主体、利用场景不同,防御策略和危害范围也存在显著差异。

http://www.lryc.cn/news/611528.html

相关文章:

  • Python实现电商商品数据可视化分析系统开发实践
  • Qt 中实现多线程的两种方式及结合
  • Pytest项目_day05(requests加入headers)
  • 8.6 JavaWeb(请求响应 P67-P74)
  • 部署Web UI自动化测试平台:SeleniumFlaskTester
  • UI测试平台TestComplete的AI视觉引擎技术解析
  • QT+opencv+yolov8推理
  • 移动端跨平台框架(支持Harmony、iOS、Android)
  • C语言:指针(1-2)
  • Kaggle 经典竞赛泰坦尼克号:超级无敌爆炸详细基础逐行讲解Pytorch实现代码,看完保证你也会!!!
  • 霍尔传感器
  • 碰撞问题的分析
  • 什么是CDN, 它为什么更快
  • 《算法导论》第 7 章 - 快速排序
  • 概率/期望 DP Jon and Orbs
  • 机器学习④【算法详解:从决策树到随机森林】
  • 一周学会Matplotlib3 Python 数据可视化-图形的组成部分
  • 场外期权的卖方是什么策略?
  • Python包管理新利器:uv全面解析与Conda对比指南
  • 从 LinkedIn 到 Apache:Kafka 的架构设计与应用场景
  • KafKa 项目 -- GitHub 学习
  • 【第6话:相机模型2】相机标定在自动驾驶中的作用、相机标定方法详解及代码说明
  • 在Word和WPS文字中如何输入汉字的偏旁部首
  • SELinux加固Linux安全2
  • docker安装FFmpeg
  • SmartMediaKit 模块化音视频框架实战指南:场景链路 + 能力矩阵全解析
  • Flink CDC如何保障数据的一致性?
  • 力扣经典算法篇-44-组合总和(回溯问题)
  • Ubuntu20.04 离线安装 FFmpeg 静态编译包
  • 【unity实战】用unity实现一个3D俯视角暗杀潜行恐怖类游戏,主要是实现视野范围可视化效果