【问题标题】:How to disable SOAP 1.1 binding with Apache CXF如何使用 Apache CXF 禁用 SOAP 1.1 绑定
【发布时间】:2014-05-27 18:10:41
【问题描述】:

在 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 绑定?

NB:在我看来,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 请求

提前致谢

【问题讨论】:

    标签: java web-services soap cxf


    【解决方案1】:

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

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

    我不太确定您所指的“扩展 XML 实体”是什么,但它可能是以下两件事之一:

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

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

    【讨论】:

    • 感谢丹尼尔的回答。与我谈论“实体支出”的人指的是您的第 1 点。正如我现在所了解的,它与解析器实现的关系比与 SOAP 版本的关系更大。很高兴知道 CXF 在解析器级别关闭了这个“功能”。然后保护我的 WS 免受这种攻击。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多