xml - 如何针对 XXE 全局配置 XML 解析器?

标签 xml security web-applications

用 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/

相关文章:

javascript - 如果 PHP 服务器脚本使用 key 调用 javascript 文件,它是否会暴露?

php - 在具有相同 Controller 名称的模块化结构化应用程序中实现 Zend_Acl

android - 使用android :tag parameter in xml?

c# - 如何在 XSLT 中进行循环?

php - 如果 xml 元素存在,则退出或跳过

java - Google App Engine 应用程序与第三方云的连接

svn - Web 应用程序的源代码管理策略 - 分支、标记、 fork 等

ruby - 如何使用 Nokogiri 解析 XML 文件?

java - 请评论对称加密中密码 block 链接(CBC)的数据大小

php - 通过 cron 作业创建文件夹并在网站端操作它的权限