如何使用 JAXB 防止 XML 实体注入
how to Prevent XML Entity Injection with JAXB
我参考 Prevent XXE Attack with JAXB 这个 link,
但仍然 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。
现在解决我的代码漏洞
谢谢
我参考 Prevent XXE Attack with JAXB 这个 link,
但仍然 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。
现在解决我的代码漏洞
谢谢