XML引用(4)--DTD应用

DTD实体声明(自定义)

作用:类似于C语言的宏定义(#define)
关键字:ENTITY
语法格式:<!ENTITY entity-name "entity-value">

<!ENTITY SSH "port:22">
<Port>SSH:&SSH;</Port>

成功将实体输出

如何对完成DTD限制的规则应用到xml文档中,就类似于js,css如何应用于html上相同,主要分为两大类,页内嵌入页外引入


XML引入DTD进行应用

1.内部的 DOCTYPE 声明嵌入方法

关键字:DOCTYPE
语法格式:<!DOCTYPE root-element [element-declarations]>
根据语法格式需要指定根元素(root-element),是不是可以指定其他元素?

<?xml version="1.0"?>
<!DOCTYPE to [
<!ENTITY SSH "port:22">
]>
<root>
<to>
    <ssh>ssh:&SSH;</ssh>
</to>
</root>
成功执行实体

自己一度理解:可以把root-element理解为作用域,可以将DTD规则应用于本元素与子元素
但是自己重新进行测试时,发现了一些端倪

root元素依旧能够解析实体

所以此处产生了一个问题,这个root-element要求是不是可以xml任意有的元素即可

2.外部的DTD引用

关键字:DOCTYPE
语法格式:<!DOCTYPE type-of-doc SYSTEM/PUBLIC "dtd-name">
type-of-doc:文档类型名称,自定义值,为了规范性,一般取根元素名称
dtd-name:可以是具体的dtd文件,也可以是远程的dtd链接(URL)

参数 功能
SYSTEM 使用的私有的外部DTD文件
PUBLIC 调用公开的DTD文件(权威机构)

一般搭配是:SYSTEM配合本地位置dtd文件 PUBLIC配合URL文件

引用外部实体方式

通过外部实体语法引用外部DTD实体。
但是在使用浏览器执行引用外部xml实体时出现问题,无法识别定义的实体;
外部实体未识别

对于未正确显示的情况,自己也进行资料查找,最后查找到了答案xml引用实体报错怎么回事


后记:外部实体引用是非常危险,著名的XXE漏洞本质就是外部实体注入来执行恶意代码,利用SSRF漏洞内网探测,甚至可以读取任意文件,执行系统命令。


第一篇:XML简介(1)--头部声明
第二篇:XML编写(2)--语法要求
第三篇:XML规范(3)--DTD限制
第五篇:XXE基础(1)--实体类别
第六篇:XXE利用(2)--漏洞实现
第七篇:XXE后记(3)--抛砖引玉

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 经过两天的奋战,终于把xml简略的过了一遍。 1.1XML介绍 xml是Extensible Markup lan...
    Ystrator阅读 4,440评论 0 2
  • xml经典总结 XML(eXtensible Markup Language)是万维网联盟(World Wide ...
    91数据阅读 4,594评论 0 2
  • # XML复习 ## 第一章 ## 思考题 **什么是XML?** XML是可扩展性标记语言,XML是标准通用标记...
    冷漠铁锤丁富贵阅读 4,334评论 0 0
  • XML基础 众所周知,xml常用于数据存储和传输,文件后缀为 .xml; 它是可扩展标记语言(Extensible...
    帅猪佩奇阅读 7,710评论 0 1
  • 一. XML的概念 XML:eXtensible Markup Language,可扩展标记语言。 可扩展的含...
    _1633_阅读 3,644评论 0 3

友情链接更多精彩内容