美文网首页
XML引用(4)--DTD应用

XML引用(4)--DTD应用

作者: 六亲不认的步伐 | 来源:发表于2020-03-26 16:19 被阅读0次

    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)--抛砖引玉

    相关文章

      网友评论

          本文标题:XML引用(4)--DTD应用

          本文链接:https://www.haomeiwen.com/subject/irlcuhtx.html