我引用Prevent XXE Attack with JAXB此链接,
但仍然是kiwan工具,在xif.createXMLStreamReader(soapHeader.getSource())
行中向我显示了很高的漏洞,因此,如果有人知道,请帮助我。
我的代码如下:
SoapHeader soapHeader = ((SoapMessage) message).getSoapHeader();
XMLInputFactory xif = XMLInputFactory.newFactory();
xif.setProperty(XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES,false);
xif.setProperty(XMLInputFactory.SUPPORT_DTD, false);
XMLStreamReader soapHeaderXsr = xif.createXMLStreamReader(soapHeader.getSource());
unmarshaller.unmarshal(soapHeaderXsr);
谢谢。
最佳答案
我通过添加额外的XMLInputFactory属性来解决此问题:
xif.setProperty(XMLInputFactory.SUPPORT_DTD,false);
防止XXE的最安全方法始终是完全禁用DTD(外部实体)。
将DTD属性设置为false以获得更多信息,请参考此link。
现在解决我的代码漏洞
谢谢
关于java - 如何使用JAXB防止XML实体注入(inject),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58725043/