Spring Boot XMLInputFactory setProperty(XMLConstants.ACCESS_EXTERNAL_DTD,””)给出无法识别的属性

yqkkidmi  于 2022-11-23  发布在  Spring
关注(0)|答案(1)|浏览(353)

使用环境:Java 8/SpringBoot版本1.3.3发布版
这是一个旧的Java代码库。最近引入了声纳,我的任务是修复关键/阻塞级安全漏洞。
在此代码中,声纳建议"在XML解析中禁用对外部实体的访问"。

XMLInputFactory factory = XMLInputFactory.newInstance();

根据声纳的建议,我在工厂中添加了以下属性:

factory.setProperty(XMLConstants.ACCESS_EXTERNAL_DTD, "");
factory.setProperty(XMLConstants.ACCESS_EXTERNAL_SCHEMA, "");

然而,当我运行单元测试时,它给出了以下错误,

java.lang.IllegalArgumentException: Unrecognized property 'http://javax.xml.XMLConstants/property/accessExternalDTD'

但是当我为DocumentBuilderFactory设置相同的属性时,

DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
docBuilderFactory.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, "");
docBuilderFactory.setAttribute(XMLConstants.ACCESS_EXTERNAL_SCHEMA, "");

我做了一点研究,发现了This Java bug。但是它已经修复了,而且它与TransformerFactory有关。但是没有发现任何与XmlInputFactory有关的bug。
任何变通方案或修复都非常感谢

qeeaahzv

qeeaahzv1#

我已经应用了这里提到的解决方案,并以如下方式配置了XMLInputFactory对象:

XMLInputFactory inputFactory = XMLInputFactory.newInstance();
inputFactory.setProperty(XMLInputFactory.SUPPORT_DTD, false);
inputFactory.setProperty(XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES, false);

OWASP XML外部实体防护

相关问题