xxe注入漏洞

本文详细介绍了XML和DTD(文档类型定义)的关系。XML用于结构化数据,而DTD提供了一种约束XML文档结构的方式,确保数据遵循特定规则。DTD可以内嵌或外部引用,用于定义元素、属性、数据类型和出现次数。此外,还讲解了实体的概念,包括内部实体和外部实体声明,以及它们在防止歧义和安全问题上的作用,如XXE注入漏洞。
摘要由CSDN通过智能技术生成

1.我们知道xml文档由xml标记语言进行编写,可以自定义标签以及属性
而dtd文档的存在则是去约束这个自定义的范围,让其趋近于某个规则

2.dtd文档可以写在xml文档的开头,这样的dtd文档被成为内部声明
当然也可以通过dtd的语法引用外部dtd文档的内容,这种dtd文档的嵌入
方法称为外部声明
dtd文档可以对元素进行定义,这个定义很强大,它可以定义元素的数据类型
(根据不同的数据类型有不同的解读规则,这个日后细讲)
定义包含的子元素,定义元素出现的次数。
此外dtd文档还可以定义属性,定义属性的默认值,属性的数据类型


3.dtd文档不只是用来约束xml文档,更是对自身格式的一种描述,通过比对文档
格式可以判断数据是否符合规定,同时还可以通过dtd文档对自身的数据进行
检验

接下来要进行描述的是实体,实体就是代表,就是变量,是快捷引用一段内容
,快捷引用一段文本的一种方式,比如<!ENTITY qq"<">,那么qq就是<的实体
在文章中出现了&qq;就会自动替换为<,并且使用这种方式表达<等特殊符号是
有好处的,那就是不会产生歧义,使用这种方式表达的特殊符号只保留长相,失去
其特殊含义,不会被计算机或程序识别。

还有就是刚刚举的那个例子是内部实体声明,接下来要讲的是外部实体声明,外部
实体声明的格式为<!ENTITY qq system"uri/url">会将url所代表的内容赋值给实体qq
这会导致一定的安全隐患,如果此处的url可控的话,就可以用来读取系统文件,这就是
xxe注入漏洞的由来

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值