首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
MCU 单片机技术
»
PowerPC
» 利用 OpenAjax 在 IBM Mashup Center 中提高 iWidget 的安全性(2)
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
利用 OpenAjax 在 IBM Mashup Center 中提高 iWidget 的安全性(2)
发短消息
加为好友
look_w
当前离线
UID
1066743
帖子
8283
精华
0
积分
4142
阅读权限
90
在线时间
233 小时
注册时间
2017-6-23
最后登录
2019-5-18
论坛元老
UID
1066743
1
#
打印
字体大小:
t
T
look_w
发表于 2018-9-14 12:48
|
只看该作者
利用 OpenAjax 在 IBM Mashup Center 中提高 iWidget 的安全性(2)
OpenAjax Hub 工作原理Mashup 应用的特点让恶意代码有可能随着 Widget 一起进来。任何一个 Mashup 页面上的 Widget 都有可能成为恶意代码的藏身地,而只要有一个 Widget 存在安全问题,整个 Mashup 应用的安全都无法得到保障。它很容易成为黑客们的攻击入口点,这给了企业 Mashup 应带来了很大的挑战。如何安全的加入第三方的 Widget 而不影响 Mashup 应用的安全性,是企业 Mashup 首要解决的问题。
图 1. 恶意 Widget 在 Mashup 环境中的威胁
为了解决上述问题,OpenAjax 应运而生。OpenAjax 是由 OpenAjax 联盟定义的一组技术和方法,用来保证 web 页面有足够的开放性和互操作性的同时,还能保证足够的安全性。它提高开放的,互操作的基于 Ajax 的 web 技术,确保客户使用 Ajax 可以得到得到长期的成功。OpenAjaxHub 是一小组 Javascript 技术的集合,用来满足 Ajax 运行时间关键的互交互性需求。OpenAjax Hub 2.0 由 定义。规范定义了一组 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 环境的安全
那么 OpenAjax Hub 中的沙盒是如何实现的呢?还是利用了浏览器的同源策略。同源策略是针对页面上 HTML 文档的。也就是说它除了限制页面上的脚本访问别的域名下的服务外,如果页面上有其他来自别的域名的 frame 或 <iframe>,不同 frame 之间的 HTML 文档也不可以互相访问。比如,位于
http://w0.foo.com/sample1.html
下的脚本就无法访问到
http://foo.com/sample1.html
中的 HTML 文档。那么,位于
http://w0.foo.com
下的 Widget 则无法访问
http://foo.com
下的内容。使用指向不同域名的 <iframe> 来隔离 Widget,便是沙盒的实现。
这里有一点需要指出,不同域名并不意味着 Mashup 应用平台需要同时运行于多个服务器上。大多数的 Web 应用服务器都支持虚拟域名 / 主机名映射。通过 DNS 服务器通配符设置,我们很容易的支持任意多个 DNS 子域名映射到单个域名,从而给沙盒 <iframe> 提供无限多的域名支持。
有了沙盒隔离不受信的 Widget 后,OpenAjax Hub 2.0 的消息总线为运行于不同沙盒间的 Widget 提供安全通信的支持。要实现不同域名的沙盒间的通信,我们还是利用了同源策略对于资源文件不受限的特点。<iframe> 中的 HTML 文档无法互相访问,但是 <iframe> 的 src 属性,<iframe> 的导入来源却可以指向任意的域名。因此通过把数据序列化到 <iframe> 的 src 上可以让不同域名下 <iframe> 间的通信成为可能。这种技术一般称为 FIM(fragment identifier messaging),这种技术通过改变在 Window.location.href 这个变量 # 后面的字符串来传递消息。
为了使用 OpenAjax Hub 为了,应用程序,需要对 OpenAjax Hub 进行初始化,设置自己的安全回调,(这个安全回调会在模块间相互通信之前被调用来检查通信的合法性),并需要为每一个模块生成容器,这个容器可以帮助模块间进行通信。图 3 显示了应用程序如何初始化 Managed Hub 和 mashup 应用:
图 3. 应用程序初始化 Hub 和 Mashup 应用
模块之间主要使用发布 / 注册的方式来要进行通信,当模块在一个主题发送一个消息的时候,容器会帮助把消息进行序列化并传递给 Hub。Hub 会调用应用程序设置的安全回调,检查消息的发送方和消息的安全性后,将消息发给注册在同一主题的模块容器。模块容器将消息反序列化再传送给模块,整个过程如图 4 所示。
图 4. OpenAjax Hub 消息传递机制
收藏
分享
评分
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议