网络服务 - 安全
安全性对于 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 服务流量的工具。