【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.pswp.cn/bicheng/92860.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/92860.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Lua】XLua一键构建工具

将以下代码放入Editor文件夹&#xff0c;点击菜单栏的XLua/一键生成代码和热补丁 即可。using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using UnityEditor; using UnityEngine;/// <summary> /// XLua自动化构建工具 //…

20250808:EasyGBS 对接大华 ICC 平台问题处理

最近有个现场在对接大华 ICC 平台时&#xff0c;客户反馈&#xff1a;EasyGBS 级联成功&#xff0c;但 ICC 显示下级离线。EasyGBS 成功对接过很多家国标平台&#xff0c;但这种情况确实少见。我们远程过去确认配置无误后&#xff0c;就进行了抓包&#xff0c;拿到包我就纳闷了…

js使用webscoket时使用自定义二进制包协议时并发问题处理

this.server new WebSocket.Server({ port: this.port });this.server.on(connection, (ws, req) > {const uniqueId dataUtil.uuid();ws.id uniqueId;global.serverSession.set(uniqueId, ws);logger.debug({ message: 客户端已连接, traceId: ws.id, address: req.sock…

元数据管理与数据治理平台:Apache Atlas 分类传播 Classification Propagation

文中内容仅限技术学习与代码实践参考&#xff0c;市场存在不确定性&#xff0c;技术分析需谨慎验证&#xff0c;不构成任何投资建议。Apache Atlas 框架是一套可扩展的核心基础治理服务&#xff0c;使企业能够有效、高效地满足 Hadoop 中的合规性要求&#xff0c;并支持与整个企…

TSF应用开发与运维部署

架构演进历程&#xff1a;单体架构-->SOA架构-->微服务架构-->Service Mesh腾讯微服务平台TSF (Tencent Service Framework) 是一个围绕应用和微服务的 PaaS 平台。提供服务全生命周期管理能力和数据化运营支持。提供多维度应用、服务、机器的监控数据&#xff0c;助力…

linux开发之mmap内存映射

mmap概念 mmp是 将文件或设备直接映射到进程的虚拟内存空间 的一种机制&#xff0c;可实现程序像访问内存一样访问文件&#xff0c;而不需要传统的 read()/write()系统调用 文件内容被映射到进程的地址空间&#xff0c;读写文件就像操作内存一样&#xff0c;操作系统负责自动同…

CPP继承

继承 一、继承概述 1、为什么需要继承 如下示例&#xff0c;Person 类、Student 类、Teacher 类有大量重复的代码&#xff0c;造成代码冗余&#xff0c;降低开发效率。我们可以通过继承来解决这一问题。在面向对象的编程语言中&#xff0c;继承是一个核心概念。主要作用将重复的…

模块 PCB 技术在未来通信领域的创新突破方向

未来通信领域对数据传输速率、信号稳定性及设备集成度的要求持续攀升&#xff0c;模块 PCB 作为通信设备的关键组件&#xff0c;其技术创新成为推动行业发展的核心动力。猎板 PCB 凭借深厚的技术积累与持续的研发投入&#xff0c;在模块 PCB 技术创新方面取得诸多突破&#xff…

mysql的InnoDB索引总结

MySQL InnoDB索引知识点总结 1. 索引类型 1.1 聚簇索引&#xff08;Clustered Index&#xff09; 定义与特性 定义&#xff1a;聚簇索引是InnoDB的默认存储方式&#xff0c;数据行按照主键的顺序物理存储在磁盘上特性&#xff1a; 每个InnoDB表只能有一个聚簇索引数据页中的记录…

C++模板的补充

类模板(上一篇没讲到类模板C/C内存管理&函数模板-CSDN博客&#xff09; 类模板的定义&#xff1a; template<class T1, class T2, ..., class Tn> class 类模板名 {// 类内成员定义 }; 用一个简单的栈例子讲类模板 #define _CRT_SECURE_NO_WARNINGS #include &l…

用JOIN替代子查询的查询性能优化

一、子查询的性能瓶颈分析‌重复执行成本‌关联子查询会导致外层每行数据触发一次子查询&#xff0c;时间复杂度为O(M*N)sql-- 典型低效案例 SELECT e.employee_id, (SELECT d.department_name FROM departments d WHERE d.department_id e.department_id) FROM employees e; …

【设计模式】访问者模式模式

访问者模式&#xff08;Visitor Pattern&#xff09;详解一、访问者模式简介 访问者模式&#xff08;Visitor Pattern&#xff09; 是一种 行为型设计模式&#xff08;对象行为型模式&#xff09;&#xff0c;它允许你在不修改对象结构的前提下&#xff0c;为对象结构中的元素添…

比特币现货和比特币合约的区别与联系

一、基本定义项目现货&#xff08;Spot&#xff09;合约&#xff08;Futures / Perpetual&#xff09;本质直接买卖比特币本身买卖比特币价格的衍生品合约所得资产真实的 BTC合约头寸&#xff08;没有直接持有 BTC&#xff09;结算方式交割比特币现金结算&#xff08;多数平台&…

Qt/C++开发监控GB28181系统/实时监测设备在线离线/视频预览自动重连/重新点播取流/低延迟

一、前言说明 一个好的视频监控系统&#xff0c;设备掉线后能够自动重连&#xff0c;也是一个重要的功能指标&#xff0c;如果监控系统只是个rtsp流地址&#xff0c;那非常好办&#xff0c;只需要重新打开流地址即可&#xff0c;而gb28181中就变得复杂了很多&#xff0c;需要多…

此芯p1开发板使用OpenHarmony时llama.cpp不同优化速度对比(GPU vs CPU)

硬件环境 Cix P1 SoC 瑞莎星睿 O6 开发板 rx580显卡 产品介绍&#xff1a; https://docs.radxa.com/orion/o6/getting-started/introduction OpenHarmony 5.0.0 使用vulkan后端的llama.cpp &#xff08;GPU&#xff09; # ./llama-bench -m /data/qwen1_5-0_5b-chat-q2_k.…

Android 四大布局:使用方式与性能优化原理

一、四大布局基本用法与特点1. LinearLayout&#xff08;线性布局&#xff09;使用方式&#xff1a;<LinearLayoutandroid:orientation"vertical" <!-- 排列方向&#xff1a;vertical/horizontal -->android:layout_width"match_parent"android:…

Redis的BigKey问题

Redis的BigKey问题 什么是大Key问题&#xff1f; 大key问题其实可以说是大value问题&#xff0c;就是某个key对应的value所占据的存储空间太大了&#xff0c;所以导致我们在操作这个key的时候花费的时间过长&#xff08;序列化\反序列化&#xff09;&#xff0c;从而降低了redi…

TDengine IDMP 产品基本概念

基本概念 元素 (Element) IDMP 通过树状层次结构来组织数据&#xff0c;树状结构里的每个节点被称之为元素 (Element)。元素是一个物理的或逻辑的实体。它可以是具体的物理设备&#xff08;比如一台汽车&#xff09;&#xff0c;物理设备的一个子系统&#xff08;比如一台汽车的…

专题二_滑动窗口_将x减到0的最小操作数

一&#xff1a;题目解释&#xff1a;每次只能移除数组的边界&#xff0c;移除的边界的总和为x&#xff0c;要求返回你移除边界的最小操作数&#xff01;也就是说你最少花几次移除边界&#xff0c;就能够让这些移除的边界的和为x&#xff0c;则返回这个次数&#xff01;所以这个…

CentOS 7 下通过 Anaconda3 运行llm大模型、deepseek大模型的完整指南

CentOS 7 下通过 Anaconda3 运行llm大模型、deepseek大模型的完整指南A1 CentOS 7 下通过 Anaconda3 运行大模型的完整指南一、环境准备二、创建专用环境三、模型部署与运行四、优化配置常见问题解决B1 CentOS 7 下通过 Anaconda3 使用 CPU 运行 DeepSeek 大模型的完整方案一、…