【问题标题】:Fortify fix for XML External Entity Injection针对 XML 外部实体注入的 Fortify 修复
【发布时间】:2016-11-09 21:02:27
【问题描述】:

当我使用强化工具进行扫描时,我在“XML 外部实体注入”下遇到了一些问题。

TransformerFactory trfactory = TransformerFactory.newInstance(); 

这是显示错误的地方。我已经按照 fortify 的建议进行了以下修复

trfactory.setFeature("http://xml.org/sax/features/external-general-entities", false); 
trfactory.setFeature("http://xml.org/sax/features/external-parameter-entities", false); 

但问题仍未解决。如何解决这个问题?

【问题讨论】:

  • 请分享任何建议。

标签: java fortify xxe


【解决方案1】:

添加这一行。它对我有用。

factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);

【讨论】:

  • 这将引发异常,而不是在您包含 doctype 时处理请求
【解决方案2】:
TransformerFactory trfactory = TransformerFactory.newInstance();
trfactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
trfactory.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, "");
trfactory.setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, "");

这就足够了。

【讨论】:

  • 这对我有用,谢谢):。在此之前,我尝试了 Fortify 建议的解决方案,但没有奏效。
  • @AlessandroIudicone 请链接到 Fortify 建议的解决方案!
【解决方案3】:

你也可以试试:

    TransformerFactoryImpl transformerFactoryImpl = new TransformerFactoryImpl();
    Transformer transformer = transformerFactoryImpl.newTransformer();
    transformer.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);

【讨论】:

  • 有效吗?作为安全强化问题的一部分,我们是否需要修复 Transformer 或 Document Builder Factory??
【解决方案4】:

如果java版本不兼容,有时它会不起作用。

if (javaVersion > 1.6) {
        dbf.setFeature("http://xml.org/sax/features/external-general-entities", false);
        dbf.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
      }
else {
        if (javaVersion > 1.5) {
          dbf.setFeature("http://xerces.apache.org/xerces2-j/features.html#external-general-entities", false);
          dbf.setFeature("http://xerces.apache.org/xerces2-j/features.html#external-parameter-entities", false);
        }
else {
          dbf.setFeature("http://xerces.apache.org/xerces-j/features.html#external-general-entities", false);
          dbf.setFeature("http://xerces.apache.org/xerces-j/features.html#external-parameter-entities", false);
        }
 }

它对我有用:-)

【讨论】:

  • 有效吗?作为安全强化问题的一部分,我们是否需要修复 Transformer 或 Document Builder Factory??
  • 是的,它正在工作。提供的修复是在强化工具中显示错误的地方,在我的情况下,我为 Document Builder Factory @lax 修复它
  • 从 esapi 为 sql 编码可能是解决此问题的正确方法
【解决方案5】:

我尝试使用“Xalan”实现类而不是 TransformerFactory.newInstance()。它对我有用并且强化问题得到了修复

        TransformerFactoryImpl transformerFactoryImpl = new TransformerFactoryImpl();
        Transformer transformer = transformerFactoryImpl.newTransformer();

【讨论】:

    猜你喜欢
    • 2017-06-26
    • 1970-01-01
    • 2015-11-17
    • 1970-01-01
    • 1970-01-01
    • 2019-11-08
    • 2022-01-18
    • 2014-03-23
    • 1970-01-01
    相关资源
    最近更新 更多