基础知识

XML

XML 被设计为传输和存储数据,XML 文档结构包括 XML 声明、DTD 文档类型定义(可选)、文档元素,其焦点是数据的内容,其把数据从 HTML 分离,是独立于软件和硬件的信息传输工具。

XXE

XXE 漏洞全称XML External Entity Injection,即 xml 外部实体注入漏洞,XXE 漏洞发生在应用程序解析 XML 输入时,没有禁止外部实体的加载,导致可加载恶意外部文件,造成文件读取、命令执行、内网端口扫描、攻击内网网站等危害。

XML 与 HTML 的主要差异

XML 被设计为传输和存储数据,其焦点是数据的内容。
HTML 被设计用来显示数据,其焦点是数据的外观。
HTML 旨在显示信息 ,而 XML 旨在传输信息。

  1. <!--XML 声明-->
  2. <?xml version="1.0"?>
  3. <!--文档类型定义-->
  4. <!DOCTYPE note [ <!--定义此文档是 note 类型的文档-->
  5. <!ELEMENT note (to,from,heading,body)> <!--定义 note 元素有四个元素-->
  6. <!ELEMENT to (#PCDATA)> <!--定义 to 元素为”#PCDATA”类型-->
  7. <!ELEMENT from (#PCDATA)> <!--定义 from 元素为”#PCDATA”类型-->
  8. <!ELEMENT head (#PCDATA)> <!--定义 head 元素为”#PCDATA”类型-->
  9. <!ELEMENT body (#PCDATA)> <!--定义 body 元素为”#PCDATA”类型-->
  10. ]]]>
  11. <!--文档元素-->
  12. <note>
  13. <to>Dave</to>
  14. <from>Tom</from>
  15. <head>Reminder</head>
  16. <body>You are a good man</body>
  17. </note>

DTD

文档类型定义(DTD)可定义合法的 XML 文档构建模块
它使用一系列合法的元素来定义文档的结构
DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用

  1. 1)内部的 DOCTYPE 声明
  2. <!DOCTYPE 根元素 [元素声明]>
  3. 2)外部文档声明
  4. <!DOCTYPE 根元素 SYSTEM ”文件名”>
  1. 1)内部实体声明
  2. <!ENTITY 实体名称 ”实体的值”>
  3. 2)外部实体声明
  4. <!ENTITY 实体名称 SYSTEM URI”>
  5. 3)参数实体声明
  6. <!ENTITY %实体名称 ”实体的值”>
  7. <!ENTITY %实体名称 SYSTEM URI”>