我需要解决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, "");
答案 0 :(得分:0)
我遇到了同样的情况,如果不更新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?。
并且