首页 > 解决方案 > XMLInputFactory setProperty(XMLConstants.ACCESS_EXTERNAL_DTD,"") 给出无法识别的属性

问题描述

环境:Java 8 / SpringBoot v1.3.3.RELEASE

这是一个旧的 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, "");

我做了一些研究,发现了这个Java 错误。但它是固定的,也与 TransformerFactory 有关。虽然找不到与 XmlInputFactory 相关的任何此类错误。

非常感谢任何解决方法或修复

标签: spring-bootjava-8xml-parsingsonarqube

解决方案


推荐阅读