用 Java 解析 XML 变得非常简单。大部分代码最终都会调用 DocumentBuilderFactory.newInstance()
,它会返回一个易受 XXE kind of attacks by default 攻击的 XML 解析器。 .
OWASP 文档详细解释了如何配置从 DocumentBuilderFactory
返回的 XML 解析器以防止此类攻击,但如何将其设为默认值?
我的问题是,我正在使用 JDOM2 等库和其他处理 XML 的代码,并且我无法轻松更改所有这些代码。我如何将安全解析器设置为默认解析器?
我已经看到 DocumentBuilderFactory
支持 javax.xml.parsers.DocumentBuilderFactory
,但是它如何适用于 Web 应用程序?
最佳答案
您可以尝试编写您的自定义DocumentBuilderFactory
并将系统属性设置为 javax.xml.parsers.DocumentBuilderFactory
所以DocumentBuilderFactory.newInstance()
将返回您的自定义类
查看文档 DocumentsBuilderFactory#newInstance
[编辑] 现在,这可能会导致 Tomcat 等 Web 容器出现问题,Tomcat 不支持每个 Web 应用程序的系统属性。这里的解决方案是设置容器的属性并将自定义工厂放在服务器的类路径上。这样,所有网络应用程序都会使用它 - 这可能就是您想要的像这样的重要安全功能。
关于xml - 如何针对 XXE 全局配置 XML 解析器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30710966/