java - 如何使用 JAXB 防止 XML 实体注入(inject)

标签 java security jaxb ws-security xxe

我指的是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/

相关文章:

java - 非常基本的 Spring websocket 返回 404

java - JAXB 从 java 生成 nillable = "true"

java - 如何匹配CIM/RDF中的JAXB元素?

java - 使用 X509Certificates 和 keytool 进行证书编码

java - Spring-Security:当 AuthenticationManager 抛出 BadCredentialsException 时返回状态 401

asp.net - 我可以在 ASP.NET 应用程序中禁止某个 IP 地址(或某个地址范围)吗?

java - JAXB变量属性名,可以吗?

java - crate.io jdbc 连接失败

JavaFX 将结果集显示到现有表格 View 中

javascript - 如何通过图像查找元素