在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请求
提前致谢
答案 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编码,所以也不是问题。