XEE全称XML External Entity Injection,也就是XML外部实体注入攻击,漏洞是对非安全的外部实体数据进行处理时引发的安全问题。要了解XXE,就必须懂得XML的一些规则。XML是用于标记电子文件使其具有结构性的标记语言,可以用来标记数据,定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素。

XML介绍

什么是XML实体(ENTITY):

在一个甚至多个XML文档中频繁使用某一条数据,我们可以预定义一个这条数据的“别名”,即一个ENTITY,然后在这些文档中需要该数据的地方调用它。根据实体的来源我们可以分为内部实体和外部实体。XML定义了两种类型的ENTITY,一种在XML文档中使用,另一种作为参数在DTD文件中使用。定义好的ENTITY在文档中通过“&实体名;”来使用。可以把实体当做XML的变量。

什么是DTD:

DTD(Document Type Definition)既文档类型定义,是一种XML约束模式语言,是XML的文件组成部分。

DTD文档有三种应用形式:

  • 内部DTD文档<!DOCTYPE 根元素[定义内容]>
  • 外部DTD文档<!DOCTYPE 根元素 SYSTEM “DTD文件路径”>
  • 内外部DTD文档结合<!DOCTYPE 根元素 SYSTEM “DTD文件路径” [定义内容]>
XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素
<?xml version="1.0" encoding="UTF-8"?>
<!-- ⬆XML声明⬆ -->
<!DOCTYPE  文件名 [
<!ENTITY实体名 "实体内容">
]>
<!-- ⬆文档类型定义(DTD)⬆ -->
<元素名称 category="属性">
文本或其他元素
</元素名称>
<!-- ⬆文档元素⬆ -->
XML定义

DTD的作用:

  • 数据库表结构和数据记录。
  • 每个XML可以携带一个自身格式的描述。
  • 不同组织的人可以用一个通用的DTD来交换数据。
  • 应用程序可以使用一个标准DTD校验从外部世界接受来的XML数据是否有效。
  • XML实体分为普通实体和参数实体。
XML实体

发表评论