1

我想尝试使用转换器将soapbody对象转换为简单的字符串xml,但它给了我XML实体注入(xxe)

TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();

StringWriter writerSoapBody = new StringWriter();
transformer.transform(soapBody.getPayloadSource(), new StreamResult(writerSoapBody));
xmlString = writerSoapBody.getBuffer().toString();

当我通过添加另外两个属性来解决时,它给了我 xxe 漏洞的例外:-

tf.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, ""); tf.setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, "");

然后它给了我其他例外,比如

java.lang.IllegalArgumentException:不支持:http://javax.xml.XMLConstants/property/accessExternalDTD

所以我的观点是:-

1.) 是否有其他方法可以将 soapBody.getPayloadSource() 转换为简单字符串?

2.)为什么它给我错误?

我参考https://rules.sonarsource.com/java/RSPEC-4435来解决 xxe 问题。

谢谢

4

0 回答 0