出版日期:2003-11-10 总期号:1265 本年期号:84
本期导读
要闻综合
中国信息化
网络与通信
软件与服务
产品与应用
渠道与市场
华东专刊
华南专刊
西北专刊
东北专刊
西南专刊
SOAP也需要防火墙

赵峰

  网络服务(Web Services)提供了对网络应用程序的访问机制,同时也给客户端应用程序接收并运行远端程序创造了机会。虽然网络服务规范中包括对授权和认证的支持,但这两种安全机制都不是必须要求实现的,由此带来了安全上的隐患。


  通道问题


  当在一台受防火墙保护的机器上运行命令的时候,通道成为攻击者们可以选择的一种工具,一些木马程序(例如BO2K)使用通道创建对外的连接,从而给网络安全造成威胁。基于HTTP协议的SOAP通道RPC(Remote Procedure Calls)有些类似于上述的通道。SOAP作为微软DCOM的替代品部分之一,出现于1999年,它是一种位于COM层之上的远端代码运行框架。因为DCOM的问题之一就是不能在防火墙环境中运行,现在大多数的防火墙都禁止137端口的通信,137端口是微软RPC服务所使用的端口。而SOAP使用HTTP协议,大多数防火墙都允许这一协议通过,因为HTTP的主要功能在于获取文本和图像而不是用于RPC。然而HTTP支持远端代码运行,每次使用指定某一脚本或程序的URI(通用资源标志符)时,就调用了远端代码。远端代码的运行参数存在于URI或请求体中并被传送,运行结果通常以HTML形式返回给浏览器。尽管SOAP存在着如此严重的通道安全隐患,在SOAP1.2版本的草案中仍然没有给出安全方面的解决方案。


  RPC调用问题


  从某种意义上说,SOAP利用了HTTP来做破坏安全的事情。举例来说,搜索引擎Google提供了SOAP API来执行检索任务,SOAP API设置了可交互的接口,以便可以通过程序来使用,而不仅是通过浏览器的请求和HTTP服务器的响应来完成查询任务。SOAP指定XML规范用于请求和响应的格式化封装,XML封装包括远程调用方法的标识符以及包含调用参数或结果的XML体。

  防火墙可以解析HTTP头并做出控制决定。对于SOAP来说,访问控制决定就不再是基于头的内容,而是要对HTTP请求或响应中的XML进行更复杂的分析,再作出判断。好在XML格式简单,在不远的将来,新的安全产品XML探测器将会检测出混杂在SOAP请求和响应中的恶意代码片断。为Web服务器写代码的程序员肩负安全上的重任,他们必须检查所有的远程输入,检测出可能导致解释错误或缓冲区溢出的那些恶意输入。


  移动代码问题


  SOAP除了支持使用RPC的可编程接口外,同时支持移动代码的使用。举例来说,通过移动代码,当用户想为旅行计划选择航班的时候,就可以下载代码模块到手机中,然后进行目录检索并拨通需要的电话。Java和.NET承诺,移动代码将会给用户带来更大的自由和便利。Java对于移动代码来说是一种语言和基础架构。.NET是微软新的开发框架,它封装了微软以前创造的所有的编程语言、库和技术,以用来支持网络服务。.NET自带对移动代码的支持——CLR(Common Language Runtime),类似于Java的虚拟机技术,并使用MSIL(Microsoft Intermediate Language)替代Java中的bytecode。Java和.NET都允许将代码转换成字节流,并通过SOAP传输和在远端系统上运行。数字签名代码可以让这一过程更加安全。

  防火墙通过将网络划分成内网和外网,可使有漏洞的网络服务免受远程访问的攻击,网络管理员由此可以保护内网中的服务器不遭受外来的攻击。如果程序员能写出安全的代码并且对这些代码的访问控制策略足够严格,SOAP和网络服务将会是安全的。但是过去的经验证明,Java和.NET的安全性都不尽如人意,所以使用网络服务并不能丢掉防火墙,我们仍然需要安置防火墙以保证网络的安全。