平安网络演示站

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1147|回复: 0

测试

[复制链接]

718

主题

890

帖子

66万

积分

论坛元老

Rank: 8Rank: 8

积分
662669
发表于 2021-4-29 00:25:44 | 显示全部楼层 |阅读模式
一、认识XML和XXE

XXE全称XML External Entity Injection,也就是XML外部实体注入攻击,是对非安全的外部实体数据进行处理时引发的安全问题。要想搞懂XXE,肯定要先了解XML语法规则和外部实体的定义及调用形式。
XML基础知识
XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素。
XML语法规则如下:
1. 所有的XML元素都必须有一个关闭标签
2. XML标签对大小写敏感
3. XML必须正确嵌套
4. XML属性值必须加引号””
5. 实体引用(在标签属性,以及对应的位置值可能会出现<>符号,但是这些符号在对应的XML中都是有特殊含义的,这时候我们必须使用对应html的实体对应的表示,比如<傅好对应的实体就是lt,>符号对应的实体就是gt)
6. 在XML中,空格会被保留(案例如:<p>a空格B</p>,这时候a和B之间的空格就会被保留)
160146tq7qx8an23vv3aby.jpg (69.75 KB, 下载次数: 0)
160157opep8tnedz6a0q6t.jpg (46.16 KB, 下载次数: 0)
XML元素介绍
XML元素是指从(且包括)开始标签直到(且包括)结束标签的部分。
每个元素又有可以有对应的属性。XML属性必须加引号。
注意:
(1) XML文档必须有一个根元素
(2) XML元素都必须有一个关闭标签
(3) XML标签对大小写敏感
(4) XML元素必须被正确的嵌套
(5) XML属性值必须加引号
160223robiivgh1qg1wrxq.png (27.9 KB, 下载次数: 0)
XML DTD介绍
DTD文档类型定义,约束了xml文档的结构。拥有正确语法的XML被称为“形式良好”的XML,通过DTD验证约束XML是“合法”的XML。

174028v8pxzb5lirlrezil.png (36.35 KB, 下载次数: 0)
174058l3w72snqzsss5ibl.jpg (162.52 KB, 下载次数: 0)
DTD是什么?
XML 文档有自己的一个格式规范,这个格式规范是由一个叫做 DTD文档类型定义(document type definition) 的东西控制的。
DTD用来描述xml文档的结构,一个DTD文档包含:  
元素的定义规则;元素之间的关系规则;属性的定义规则。
DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用。
他就是长得下面这个样子:
内部的 DOCTYPE 声明
内部声明DTD类型
内部声明DTD类型声明:<!DOCTYPE 根元素[子  元素声明]>
174141l3ton0ztfnpganpu.jpg (82.04 KB, 下载次数: 0)
引用外部实体:
我们主要关注XML外部实体的定义和调用方式:
<!ENTITY 实体名称 SYSTEM "URI">
174220cc77b2cbj7bbu2i7.jpg (245.39 KB, 下载次数: 0)

DTD数据类型
PCDATA的意思是被解析的字符数据/
PCDATA的意思是被解析的字符数据,PCDATA是会被解析器解析的文本
CDATA的意思是字符数据
CDATA是不会被解析器解析的文本,在这些文本中的标签不会被当作标记来对待,其中的实体也不会被展开。
DTD实体介绍
(实体定义)
实体是用于定义引用普通文本或者特殊字符的快捷方式的变量

    在DTD中的实体类型,一般分为:内部实体和外部实体,细分又分为一般实体和参数实体。除外部参数实体引用以字符(%)开始外,其它实体都以字符(&)开始,以字符(;)结束。

内部实体:

<!ENTITY 实体名称 "实体的值">

174307xs6v03sr6d3e3drs.jpg (69.13 KB, 下载次数: 0)


外部实体:

<!ENTITY 实体名称 SYSTEM "URI/URL">
174319k3ufvv3nh43ykvv0.png (39.65 KB, 下载次数: 0)
外部参数实体:
<!ENTITY % 实体名 "实体内容”>
174356bwcj46qiwqrdn1oy.jpg (131.44 KB, 下载次数: 0)
防御方法:
1. 禁用外部实体
2. 过滤和验证用户提交的XML数据
3. 不允许XML中含有任何自己声明的DTD
4. 有效的措施:配置XML parser只能使用静态DTD,禁止外来引入;对于Java来说,直接设置相应的属性值为false即可

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|平安网络演示站 ( 闽ICP备11012075号-7 )

GMT+8, 2024-11-22 02:22 , Processed in 0.135678 second(s), 25 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表