我想尝试使用转换器将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 问题。
谢谢