如何使用 Apache CXF 禁用 SOAP 1.1 绑定



在Java/Spring/Apache CXF应用程序中,我有一个SOAP端点,定义如下:

<cxf:endpoint
    id="MessagingService"
    address="/MessagingService"
    bindingUri="http://www.w3.org/2003/05/soap/bindings/HTTP/"
    implementor="mypackage.MessagingServiceImpl" />

属性bindingUri="http://www.w3.org/2003/05/soap/bindings/HTTP/"启用 SOAP 1.2 绑定。我已经测试过了,它有效。

有些人认为 SOAP 1.1 存在"扩展 XML 实体"的安全问题。我想保护我的 Web 服务免受此类攻击。

不确定我的问题是否有意义,但是:是否可以"禁用"SOAP 1.1 绑定?

注意:从我的角度来看,SOAP 1.1 和 SOAP 1.2 请求之间的区别在于 SOAP 1.1 请求中使用的

XML 命名空间http://schemas.xmlsoap.org/soap/envelope/和 SOAP 1.2 请求中使用的http://www.w3.org/2003/05/soap-envelope。"禁用"SOAP 1.1 绑定可能意味着:拒绝使用 SOAP 1.1 命名空间的任何 SOAP 请求

提前致谢

您需要添加一个拦截器来检查 soap 版本并抛出错误。

也就是说,我真的不明白你的担忧。 在 CXF 中,两个版本的处理方式完全相同。 1.1 的任何安全问题也会出现在 1.2 中。 因此,这样做不会给您带来任何好处。

我不确定您指的是"扩展 XML 实体",但它可能是以下两件事之一:

1) XML DTD 实体扩展 - 这是一个 XML 级别的东西,会影响 1.1 和 1.2。 但是,CXF 在解析器级别将其关闭。

2)SOAP编码结构循环等将是SOAP 1.1,但CXF不支持SOAP 编码,所以也不是问题。

最新更新