首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在解析XInclude时禁用XML?

如何在解析XInclude时禁用XML?
EN

Stack Overflow用户
提问于 2018-11-06 08:53:42
回答 1查看 1.1K关注 0票数 3

据我所知,当从不受信任的来源接收XML时,XInclude是一个潜在的漏洞。请参阅Sheet#Java

我期望从外部源获得的XML非常简单,并且从来没有任何包含外部XML的要求。

我尝试了以下方法来禁用XInclude (正如备忘单中所建议的):

代码语言:javascript
复制
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setXIncludeAware(false);
dbf.setExpandEntityReferences(false);

并使用此XML测试

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<data xmlns:xi="http://www.w3.org/2001/XInclude">
    <xi:include href="file://d/temp/badxml.xml" parse="xml">
    </xi:include>
</data>

外部文件包含无效的XML。

我原以为如果setXIncludeAware设置为true,解析器就会失败,但事实并非如此。片段总是可以解析的。我正在使用Java 8。

这是一个有效的测试吗?这是避免XInclude攻击的正确方法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-06 11:11:56

这是避免XInclude和实体攻击的正确方法,但正如您已经发现的那样,这不是对XInclude攻击的有效测试。

根据this answer的说法,"XInclude支持依赖于名称空间支持,默认情况下,由于向后兼容性的原因,名称空间支持会被关闭“。所以叫dbf.setNamespaceAware(true);

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53168546

复制
相关文章

相似问题

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