相关疑难解决方法(0)

如何修复java中的“禁用XML外部实体(XXE)处理”漏洞

我针对 sonarqube 运行了我的 java 代码,我得到了“禁用 XML 外部实体 (XXE) 处理”作为漏洞。我花了一些时间在谷歌上解决这个问题。我一直在尝试很多方法,但没有任何方法对我有用。我不知道我错过了什么

我的代码:

        final DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
        docFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
        docFactory.setFeature(XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES, false);
        docFactory.setFeature(XMLInputFactory.SUPPORT_DTD, false);

        docFactory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
        docFactory.setFeature("http://xml.org/sax/features/external-general-entities", false);
        docFactory.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
        docFactory.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);

        final DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
        final Document doc = docBuilder.parse(filepath);
Run Code Online (Sandbox Code Playgroud)

我正在使用 java 1.8,任何帮助表示赞赏。谢谢

java xml owasp sonarqube

13
推荐指数
3
解决办法
1万
查看次数

如何防止在TransformerFactory上进行XML外部实体注入

我的问题:

Fortify 4.2.1将以下代码标记为容易受到XML外部实体攻击。

TransformerFactory factory = TransformerFactory.newInstance();
StreamSource xslStream = new StreamSource(inputXSL);
Transformer transformer = factory.newTransformer(xslStream);
Run Code Online (Sandbox Code Playgroud)

我尝试过的解决方案:

  1. 将TransformerFactory功能设置为XMLConstants.FEATURE_SECURE_PROCESSINGtrue。

  2. 研究了为TransformerFactory提供更多此类功能的可能性,就像我们对DOM和SAX解析器所做的一样。例如,禁止doctype声明等。但是TransformerFactoryImpl似乎没有接受任何其他内容XMLConstants.FEATURE_SECURE_PROCESSING验证码

请向我指出您认为我可能没有使用过的任何资源,或该问题的可能解决方案。

java xml xslt fortify xxe

5
推荐指数
2
解决办法
1万
查看次数

标签 统计

java ×2

xml ×2

fortify ×1

owasp ×1

sonarqube ×1

xslt ×1

xxe ×1