spring-boot - 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 相关的任何此类错误。
非常感谢任何解决方法或修复
解决方案
推荐阅读
- python-3.x - 提取并重新格式化 PostgreSQL 查询输出 (python)
- python - How to filter a Group using lambda function in python H2O like pandas?
- java - 第二个按钮单击后Java JTable重叠表
- ios - 如何访问嵌套结构中的值
- file - COBOL - 打开具有相对和动态选项的顺序数据集时的文件状态 37
- python - Tensorflow,在给定条件下更改张量值
- java - 什么是“PrintStream 目标”?
- regex - grep -o 在同一行中多次出现变量字符串
- directx - 如何在 DirectX11 中渲染具有多个层次对象的场景?
- javascript - 创建 3D 立方体