使用环境: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。
任何变通方案或修复都非常感谢
1条答案
按热度按时间qeeaahzv1#
我已经应用了这里提到的解决方案,并以如下方式配置了XMLInputFactory对象:
OWASP XML外部实体防护