【问题标题】:Prevent XXE fortify issue for TrasnformerFactory防止 TrasnformerFactory 出现 XXE 强化问题
【发布时间】:2016-05-30 11:49:20
【问题描述】:

我需要修复 XXE 问题。我在代码中使用了 transformerfactory。 在下面找到修复但我在我的代码中看不到 ACCESS_EXTERNAL_DTD 属性。我得到的原因是下面的代码将适用于 Java7 但是我使用的是 Java 6。有人可以建议一些其他修复 要保护 Java TransformerFactory 免受 XXE 攻击,请执行以下操作:

TransformerFactory tf = TransformerFactory.newInstance();
tf.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, "");
tf.setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, "");

【问题讨论】:

  • 您是否获得了 java 6 的任何解决方案,如果可能请分享

标签: java fortify


【解决方案1】:

我也遇到了同样的情况,不更新Java版本很难解决。

以下是能够以相同结果通过强化扫描的代码更改。

使用以下代码代替 TransformerFactory:

   DOMImplementationLS domImplementation = (DOMImplementationLS) doc.getImplementation();
   LSSerializer lsSerializer = domImplementation.createLSSerializer();
   LSOutput lsOutput = domImplementation.createLSOutput( );


   lsOutput.setEncoding("UTF-8");
   StringWriter stringWriter=new StringWriter();
   lsOutput.setCharacterStream(stringWriter);
   lsSerializer.write(doc,lsOutput);
   return stringWriter.toString();

如需参考,请查看Is there a more elegant way to convert an XML Document to a String in Java than this code?

还有

【讨论】:

    猜你喜欢
    • 2017-03-31
    • 2012-10-10
    • 1970-01-01
    • 2015-10-10
    • 1970-01-01
    • 2012-12-23
    • 2023-03-07
    • 2013-01-01
    • 1970-01-01
    相关资源
    最近更新 更多