首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >外部实体在文件中为空。

外部实体在文件中为空。
EN

Stack Overflow用户
提问于 2022-05-20 10:07:48
回答 1查看 57关注 0票数 1

从昨天起我就一直在试着修理它。我尝试在我的xml文件中使用外部实体。当我在浏览器中打开文件时,应该是文件文本的位置为null。我在标记 ( &encjez; )之前使用了外部实体。在浏览器中,我看到了所有的好东西,但是应该是文件文本的位置看起来是。什么都没有。在我看来,我把所有的事情都做得很好。我不知道该怎么办。它不能给我任何安宁。请帮帮我。

//xml文件

代码语言:javascript
运行
复制
<!DOCTYPE lista_filmów [
    
    <!ELEMENT lista_filmów (film+)>
    <!ELEMENT film (tytuł, rok_produkcji, reżyser)>
    <!ATTLIST film category CDATA #REQUIRED>
    <!ELEMENT reżyser (imie, nazwisko, płeć)>
    <!ELEMENT tytuł (#PCDATA)>
    <!ATTLIST tytuł jezyk CDATA #REQUIRED>
    <!ELEMENT rok_produkcji (#PCDATA)>
    <!ELEMENT imie (#PCDATA)>
    <!ELEMENT nazwisko (#PCDATA)>
    <!ELEMENT płeć (#PCDATA)>
    <!ENTITY encjaw "Whedon" >
    <!ENTITY encjez SYSTEM "file:///C:/Users/Legion/Desktop/kss/encjez.txt">
]>

<lista_filmów>
<!-- POCZATEK Joss Whedon-->

<!-- Film z encją predefiniowaną-->
    <film category = "Akcja">
        <tytuł jezyk = "ang">Avengers</tytuł>
        <rok_produkcji>2012 &lt; </rok_produkcji>
        <reżyser>
            <imie><![CDATA[ Joss <> ]]></imie>
            <nazwisko>&encjaw;</nazwisko>
            <płeć>&encjez;</płeć>
        </reżyser>
    </film>
</lista_filmów>
EN

回答 1

Stack Overflow用户

发布于 2022-05-20 12:53:37

短答案

浏览器可能不会加载外部实体以避免XXE攻击

外部实体声明也可以放在方括号外。

代码语言:javascript
运行
复制
<!DOCTYPE lista_filmów SYSTEM "file:///home/lmc/tmp/entity.dtd" [
    
    <!ELEMENT lista_filmów (film+)>
    <!ELEMENT film (tytuł, rok_produkcji, reżyser)>
    <!ATTLIST film category CDATA #REQUIRED>
    <!ELEMENT reżyser (imie, nazwisko, płeć)>
    <!ELEMENT tytuł (#PCDATA)>
    <!ATTLIST tytuł jezyk CDATA #REQUIRED>
    <!ELEMENT rok_produkcji (#PCDATA)>
    <!ELEMENT imie (#PCDATA)>
    <!ELEMENT nazwisko (#PCDATA)>
    <!ELEMENT płeć (#PCDATA)>
    <!ENTITY encjaw "Whedon" >
    
]>

<lista_filmów>
<!-- POCZATEK Joss Whedon-->

<!-- Film z encją predefiniowaną-->
    <film category = "Akcja">
        <tytuł jezyk = "ang">Avengers</tytuł>
        <rok_produkcji>2012 &lt; </rok_produkcji>
        <reżyser>
            <imie><![CDATA[ Joss <> ]]></imie>
            <nazwisko>&encjaw;</nazwisko>
            <płeć>&encjez;</płeć>
        </reżyser>
    </film>
</lista_filmów>

Entity.dtd包含:

代码语言:javascript
运行
复制
<!ENTITY encjez "LMC">

xmllint在命令行上进行测试

代码语言:javascript
运行
复制
xmllint --loaddtd --noent --xpath '//płeć' tmp.xml ; echo
<płeć>LMC</płeć>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72317105

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档