Java 解析XML时如何禁用XInclude?
据我所知,Java 解析XML时如何禁用XInclude?,java,xml,xxe,Java,Xml,Xxe,据我所知,XInclude是从不可信来源接收XML时的一个潜在漏洞。看 我所期望的来自外部源的XML非常简单,并且不需要包含外部XML 我尝试了以下方法来禁用XInclude(如备忘单中所建议的): 并使用此XML进行测试 <?xml version="1.0" encoding="utf-8"?> <data xmlns:xi="http://www.w3.org/2001/XInclude"> <xi:include href="file://d/tem
XInclude
是从不可信来源接收XML时的一个潜在漏洞。看
我所期望的来自外部源的XML非常简单,并且不需要包含外部XML
我尝试了以下方法来禁用XInclude(如备忘单中所建议的):
并使用此XML进行测试
<?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
,解析器会失败,但事实并非如此。代码段始终是可解析的。我正在使用Java8
这是有效的测试吗?这是避免XInclude攻击的正确方法吗?这是避免XInclude和实体攻击的正确方法,但正如您所发现的,这不是对XInclude攻击的有效测试
根据“XInclude支持依赖于名称空间支持,由于向后兼容的原因,默认情况下会关闭名称空间支持”。因此调用
dbf.setNamespaceAware(true)代码>等等,是关于如何禁用XInclude的问题,还是当包含无效XML文件时解析是否应该失败的问题?@Progman主要目标是禁用XInclude(如标题所示)。我有点困惑,因为我预计当XInclude出现时会发生一些事情,例如解析错误。目前,我没有得到任何指示,因此不确定是否可以避免攻击。当您尝试加载带有启用或禁用XInclude标志的有效XML文件时,会发生什么情况?由于不包括外部文件,您应该获得较少的数据。你就是这样吗?
<?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>