如何禁用与Apache CXF的SOAP 1.1绑定

时间:2014-01-16 15:19:58

标签: java web-services soap cxf

在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实体”的安全问题。我想保护我的WebService免受这种攻击。

不确定我的问题是否有意义但是:是否可以“禁用”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请求

提前致谢

1 个答案:

答案 0 :(得分:1)

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

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

我不完全确定你所说的“扩展XML实体”,但它可能是两件事之一:

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

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