安全性对Web服务至关重要。但是,XML-RPC和SOAP规范都不会提供任何明确的安全或身份验证要求。
Web服务有三个具体的安全问题:
如果客户端向服务器发送XML请求,我们可以确保通信保密吗?
答案在这里:
单个Web服务可能包含一系列应用程序。例如,一个大型服务可能将三个其他应用程序的服务结合在一起。在这种情况下,SSL是不够的; 消息需要沿着服务路径在每个节点加密,并且每个节点表示链中的潜在的弱链路。目前,这个问题没有一致的解决方案,但一个有希望的解决方案是W3C XML加密标准。该标准提供了加密和解密整个XML文档或只是XML文档的一部分的框架。您可以在http://www.w3.org/Encryption查看
如果客户端连接到Web服务,我们如何识别用户?用户是否有权限使用该服务?
可以考虑以下选项,但对强认证方案没有明确的共识。
HTTP包括对Basic和Digest身份验证的内置支持,因此可以以与HTML文档当前受保护的方式大致相同的方式来保护服务。
SOAP数字签名(SOAP-DSIG)利用公钥加密技术对SOAP消息进行数字签名。它使客户端或服务器验证对方的身份。请访问http://www.w3.org/TR/SOAP-dsig。
提高结构化信息标准组织(OASIS)正在研究安全声明标记语言(SAML)。
目前,这个问题目前还没有简单的答案,这已经是很多争论的话题了。现在,如果您真的想过滤出SOAP或XML-RPC消息,一种可能性是将所有HTTP POST请求过滤出来,将其内容类型设置为text / xml。
另一种方法是过滤SOAPAction HTTP头属性。防火墙供应商目前还在开发明确设计用于过滤Web服务流量的工具。