1.1.7 其他协议

HTTP似乎很简单,有创造力的人们使用HTTP基本请求/响应机制的次数是令人吃惊的。但是,HTTP并不总是应用开发问题的最佳解决方案,因此,更有创造力的人们将这个基本的协议封装在各种新动态功能之中。

最近最重要的新事物之一就是Web分布式创作和版权管理(Web-based Distributed Authoring and Versioning,WebDAV)。WebDAV在RFC 4918中定义,描述了用于远程Web服务器上的多种内容创作和管理机制。从个人角度讲,我们不认为这是一个好主意,因为一个协议在其默认形式下可以将数据写入Web服务器,除了麻烦以外不会带来什么,这是我们在本书中一再看到的主题。但是,WebDAV已经被包括从Microsoft的客户端和服务器(例如SharePoint)到开源的Alfresco等各种产品广泛采用,所以讨论其安全品质目前可能没有意义。

最近,基于XML的Web服务的概念变得流行。虽然在定义文档元素的标记的使用上与HTML很相似,但是可扩展标记语言(XML)已经演变成为更处于幕后的角色,为应用之间的通信定义模式和协议。简单对象访问协议(SOAP)是基于XML的用于Web服务之间消息和RPC风格通信的协议。我们将在第7章详细讨论Web服务的漏洞和对策。

其他一些类似协议包括异步JavaScript和XML(AJAX)以及简易信息聚合(Really Simple Syndication,RSS)。AJAX是一种新颖的Web应用编程方法,使用轻量级的JavaScript和XML技术创建了“胖客户端”应用的体验。有些人将AJAX称为“Web 2.0”的基础。这种技术示例可以参见http://www.crn.com/software/192203330。我们已经指出了客户端上可执行内容的潜在安全问题,在第9章中将再做深入介绍。

RSS是一种基于XML的轻量级机制,用于在网站和客户端之间动态地反馈变化的“新闻提要”。RSS一个最明显的例子是在Windows Vista及更新版本的桌面上提供滚动新闻标题/超链接的“Feed Headlines”工具。RSS的安全后果可能很严重,它从许多来源接受随意的HTML,并且盲目地重新发布。正如前面的讨论中提到的HTML可能携带的危险载荷,这为Web浏览器在各种场合下的安全加上了更沉重的负担。

具有广阔前景的用户生成内容(UGC)混合了目前讨论过的各种技术的风险。为了符合对新鲜素材的全天候需求,许多新的和传统的媒体组织精明地从最终用户那里得到越来越多的内容。讨论区、博客、Wiki、社交网站、照片和视频共享应用、客户评论网站等都是这种来源的例子。这种潮流大大扩展了内容创建者的队伍,从而也增加了遇到恶意攻击的机会。

AJAX、RSS和UGC代表着Web应用初始设计原理受到的广泛挑战,最初预期的是单个客户和单个网站(也就是一个域如amazon.com)之间的一种简单关系。这种安全模型有时被称为同源策略(Same-origin policy),源于Netscape Navigator浏览器的早期版本。因为Web应用努力将各种来源的更加丰富的功能集成到单个浏览器里,这种概念有时被称作混搭(Mashup)。早期浏览器中老式的同源策略开始显出老态,敏捷的程序员(双关语)正在以更多和更好的功能为名,开发避开老式安全模型的方法。新的安全机制,如HTTP“Origin”首部,为跨站验证提供了更健壮的框架,这样,攻击和对抗双方又开始了较量。