生命在于学习——XXE漏洞

本文详细介绍了XML外部实体注入(XXE)漏洞,包括XML的结构、DTD、实体类型以及常见语法。XXE允许攻击者通过恶意构造XML输入,获取服务器内部信息或执行任意系统命令。防御方案包括禁用外部实体、过滤用户提交的XML数据和更新相关组件。了解这些知识对于提升系统安全性至关重要。
摘要由CSDN通过智能技术生成

一、XXE描述

1、前言

XML外部实体注入,简称XXE漏洞,XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素,目前,XML文件作为配置文件(Spring、Strust2等)、文档结构说明文件(PDF、RSS等)、图片格式文件(SVG header)应用比较广泛。XML的语法规范由DTD来进行控制。

2、简介

XML是可扩展的标记语言,设计用来进行数据的传输和存储。

二、XML和DTD介绍

1、示例

在这里插入图片描述
在这里插入图片描述

2、PCDATA

pcdata的意思是被解析的字符数据。
可以把字符数据想象为XML元素的开始标签与结束标签之间的文本,PCDATA是会被解析器解析的文本,这些文本将被解析器检查实体以及标记,文本中的标签会被当做标记来处理,而实体会被展开,不过,被解析的字符数据不应当包含任何&、<、>字符,需要用&amp;&lt;以及&gt;实体来分别替换他们。

3、CDATA

CDATA的意思是字符数据。
CDATA是不会被解析器解析的文本,在这些文本中的标签不会被当做标记来对待,其中的实体也不会被展开。

4、常见的xml语法结构

在这里插入图片描述
实体:实体是对数据的引用,根据实体种类的不同,XML解析器将使用实体的替代文本或者外部文档的内容来替代实体引用,它主要分为以下四类。

  • 内置实体
  • 字符实体
  • 通用实体
  • 参数实体
    参数实体用%实体名称申明,引用时也用%实体名称。
    其余实体直接用实体名称申明,引用时用实体名称。
    参数实体只能在DTD中申明,DTD中引用。
    其余实体只能在DTD中申明,在xml文档中引用。
    注意:参数实体是在DTD中被引用的,而其余实体是在xml文档中被引用的,另外定义%后面跟空格。

5、DTD中的一些重要关键字

  • DOCTYPE(DTD的声明)
  • ENTITY(实体的声明)
  • SYSTEM、PUBLIC(外部资源申请)

6、内部实体声明

在这里插入图片描述

7、外部实体声明

在这里插入图片描述
在这里插入图片描述

8、参数实体格式

在这里插入图片描述

三、XXE漏洞防御方案

1、使用开发语言提供的禁用外部实体的方法

在这里插入图片描述

2、过滤用户提交的XML数据

在这里插入图片描述

3、升级libxml组件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「已注销」

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值