OpenAjax -


未知
跨平台
JavaScript

软件简介

OpenAjax 是由 OpenAjax 联盟定义的一组技术和方法,用来保证 web
页面有足够的开放性和互操作性的同时,还能保证足够的安全性。它提高开放的,互操作的基于 Ajax 的 web 技术,确保客户使用 Ajax
可以得到得到长期的成功。OpenAjaxHub 是一小组 Javascript 技术的集合,用来满足 Ajax 运行时间关键的互交互性需求。OpenAjax
Hub 2.0 由 Interoperability Working
Group
定义。规范定义了一组 Mashup
页面上 Widget 间的通信协议。

OpenAjax Hub 提供了两种模式,一种是 managed Hub,一种是 unmanaged Hub。Unmanaged Hub 只提供了
widget 之间的通信机制,它允许在同一个浏览器窗口中的 widget 通过 publish 和 subscribe API
来通信,而没有提供对于隔离和安全性的任何规定。Managed Hub 更加复杂,他提供了将模块隔离在安全的沙盒中的功能,比如利用不同子域名的 IFRAME
来实现沙盒的隔离功能。因为 IBM Mashup Center 中用到的主要是 managed Hub,所以本文着重介绍 managed Hub。

在带有 OpenAjax Hub 2.0 实现的页面上,那些不被信任的第三方 Widget 会被安全的沙盒隔离开来。运行在沙盒中的 Widget
将单独运行在与 Mashup 应用不同的“源”下,确保其无法访问到 Mashup 应用的 HTML 文档。同时,为保证运行于沙盒中的 Widget
可以与页面中其他 Widget 进行通信,OpenAjax Hub 也提供了消息总线。消息总线是 OpenAjax Hub 定义的位于沙盒中的 Widget
与页面中其他 Widget 通信的一位方式。这样,任何一个运行于沙盒中的 Widget 只能够和消息总线通信,而无法直接通过脚本语言访问或修改页面上该
Widget 外的其他 Widget 或其他元素或变量。

图 2. OpenAjax Hub 隔离恶意 Widget 来保证 Mashup 环境的安全
图 2. OpenAjax Hub 隔离恶意 Widget 来保证 Mashup
环境的安全

那么 OpenAjax Hub 中的沙盒是如何实现的呢?还是利用了浏览器的同源策略。同源策略是针对页面上 HTML
文档的。也就是说它除了限制页面上的脚本访问别的域名下的服务外,如果页面上有其他来自别的域名的 frame 或