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 服务流量的工具。

广告