当前位置: 首页 > 知识库问答 >
问题:

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

白通
2023-03-14

在Java中解析XML变得非常简单。大多数代码最终调用DocumentBuilderFactory。newInstance()返回默认情况下易受XXE类攻击的XML解析器。

OWASP文档详细解释了如何配置从DocumentBuilderFactory返回的XML解析器以防止此类攻击,但如何将其设为默认值?

我的问题是,我正在使用像JDOM2这样的库和其他处理XML的代码,我无法轻松地更改所有这些代码。我如何使安全解析器成为默认解析器?

我看到DocumentBuilderFactory支持javax.xml.parsers.DocumentBuilderFactory,但它如何适用于Web应用程序?

共有2个答案

羊煜
2023-03-14

看见http://web-in-security.blogspot.fr/2014/11/detecting-and-exploiting-xxe-in-saml.html或https://www.owasp.org/index.php/XML_External_Entity_(XXE)_Prevention\u Cheat\u Sheet

但以下代码提供了良好的保护

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, "");
dbf.setAttribute(XMLConstants.ACCESS_EXTERNAL_SCHEMA, "");
dbf.setAttribute(XMLConstants.FEATURE_SECURE_PROCESSING, Boolean.TRUE);
dbf.setExpandEntityReferences(false);

不确定XML常量的效果。FEATURE_SECURE_PROCESSING。它通常与dbf.set功能一起记录,但并非在所有版本的Xerces中都可用

丌官瀚
2023-03-14

您可以尝试编写自定义的DocumentBuilderFactory,并为javax.xml.parsers.DocumentBuilderFactory设置系统属性

因此,DocumentBuilderFactory。newInstance()将返回您的自定义类

请参阅留档DocumentsBuilderFactory#newInstance

[编辑]现在,这可能会导致网络容器出现问题,例如Tomcat,它不支持每个webapp的系统属性。这里的解决方案是为容器设置属性,并将自定义工厂放在服务器的类路径上。这样,所有的网络应用程序都会使用它——这可能就是你想要的一个重要的安全功能,比如这个。

 类似资料:
  • Mpx.config 是一个对象,包含 Mpx 的全局配置。可以在启动应用之前修改下列 property: useStrictDiff 类型: boolean 默认值:false 用法: 每次有数据变更时,是否使用严格的 diff 算法。如果项目中有大数据集的渲染建议使用,可以提升效率。 import mpx from '@mpxjs/core' mpx.config.useStrictDiff

  • 全局系统配置 服务端配置 通过服务端配置,配置每台CAT服务器的职责。 配置的sample如下: id="default"是默认的配置信息,server id="10.1.1.1" 如下的配置是表示10.1.1.1这台服务器的节点配置覆盖default的配置信息,比如下面的job-machine,alarm-machine,send-machine为true。 [注意这个IP为cat拿到的内网IP

  • 使用QueryList全局配置,避免重复操作。 QueryList的config()方法可用于全局配置QueryList。 使用场景:比如在项目中全局注册QueryList插件,这样在项目中任何位置都可以直接使用这些插件,避免重复注册操作。 示例 在项目的启动文件中全局注册一些QueryList插件和扩展一些功能,以Laravel框架为例,在AppServiceProvider.php文件的boo

  • hi-nginx-java的全局配置系统是通过config组件构造的。关于配置文件的语法和用法,请自行参考该网址的介绍。 运行时配置可通过hi_java_options进行全局配置: hi_java_options "-server -d64 -Dconfig.file=java/application.conf"; 其中的-Dconfig.file被用来指定全局配置文件application.

  • 这是我正在使用的DomParser的代码片段,我正在使用的DomParser是Oracle的。 最近,我们的安全团队提出了一个问题,即上述DOM解析器容易受到安全攻击,并建议设置两个属性 但在设置这些属性时,我得到以下错误, 请告诉我如何防止XML实体扩展注入和XXE攻击。我曾尝试查看OWASP XEE备忘单并浏览XXE攻击的各种问题和答案,但找不到解决方案。

  • 主要内容:1. struts.properties,2. struts.xml,3. listener通常情况下,您可能需要一个全局资源包(属性文件)来存储信息,可用于在应用程序中的所有类。 在Struts2,有三种方式来配置全局资源包: 1. struts.properties 配置全局资源包在 “struts.properties” 文件,在这里你定义一个名为“global.properties”的属性文件为全局资源包。 对于多个资源包,只是用逗号分隔属性文件。 2. struts.xml