Web 服务 - 安全

安全对于 Web 服务至关重要。 然而,XML-RPC 和 SOAP 规范都没有提出任何明确的安全或身份验证要求。

Web 服务存在三个特定的安全问题 −

  • 保密
  • 身份验证
  • 网络安全

保密

如果客户端向服务器发送 XML 请求,我们能否确保通信保密?

答案就在这儿 −

  • XML-RPC 和 SOAP 主要运行在 HTTP 之上。
  • HTTP 支持安全套接字层 (SSL)。
  • 可以通过 SSL 加密通信。
  • SSL 是一项经过验证的技术并得到广泛部署。

单个 Web 服务可能由一系列应用程序组成。 例如,一项大型服务可能会将其他三个应用程序的服务捆绑在一起。 在这种情况下,SSL 是不够的; 消息需要在服务路径上的每个节点进行加密,每个节点代表链中潜在的薄弱环节。 目前,这个问题还没有达成一致的解决方案,但一个有前景的解决方案是 W3C XML 加密标准。 该标准提供了一个用于加密和解密整个 XML 文档或 XML 文档的一部分的框架。 你可以在 www.w3.org/Encryption 查看

身份验证

如果客户端连接到 Web 服务,我们如何识别用户? 用户是否有权使用该服务?

可以考虑以下选项,但对于强身份验证方案尚未达成明确共识。

  • HTTP 内置了对基本和摘要式身份验证的支持,因此可以采用与当前保护 HTML 文档大致相同的方式来保护服务。

  • SOAP 数字签名 (SOAP-DSIG) 利用公钥加密技术对 SOAP 消息进行数字签名。 它使客户端或服务器能够验证对方的身份。 在 www.w3.org/TR/SOAP-dsig 处检查。

  • 结构化信息标准促进组织 (OASIS) 正在研究安全断言标记语言 (SAML)。

网络安全

目前这个问题没有简单的答案,并且一直是很多争论的话题。 目前,如果您确实想过滤掉 SOAP 或 XML-RPC 消息,一种可能性是过滤掉所有将其内容类型设置为 text/xml 的 HTTP POST 请求。

另一种替代方法是过滤 SOAPAction HTTP 标头属性。 防火墙供应商目前也在开发专门用于过滤 Web 服务流量的工具。