裸奔的“Mashup”
——{如何设计安全的Ajax Mashup}
作者:
cleverpig一、谁叫mashup?图-1 建筑学上的“mashup” 由多个源站点无缝合并而成的一个web站点或web应用被称为“mashup”。它带给用户集成体验:分散在各地的页面被以一种新奇的重用模式合并、表达出来。 典型mashup的内容通过公共接口或是API取自第三方来获得。而另一种方式就是通过包含web feeds(比如RSS、Atom)和Javascript(比如google AdSense)来获得内容。 大家会在以下的地方对mashup有所体验:eBay、Amazon、Google、Windows Live和Yahoo开发网络。二、“物美价廉”的乐高平台图-2 并不“价廉”的乐高星战系列
mashup作为一个建立web应用的新方式,它在单一页面中合并了来自多个源站点的程序和数据服务。通称,通过将javascript作为各个源页面之
间的“粘合剂”使这些组件和连接被乖巧地布局在同一个页面里,这样并无需昂贵的花费就生产出有价值的“新产品”。 mashup就如一套乐高玩具(比如乐高星战系列),把现存的有趣东西粘合在一起。三、互联网上的“裸奔”图-3 裸奔需要勇气的 这里的裸奔并非在光天化日之下的赤裸行为,而是将自己一丝不挂的充分暴露在互联网中,等待着种种无情的“欺辱”。 下面来看一下可能导致mashup裸奔的原因: 1.束手无措的javascript:在组件包含私有信息或者带有私有连接时mashup就无法工作了(至少整个页面已经被forbidden提示搞得丑陋不堪)。javascript提供了一些穿过这些“封锁”的暗门,但它所依赖的单独的全局对象却由于包含页面和被包含页面之间的互不信任而被禁止。 2.无衣遮身的DOM:mashup中的DOM对安全来讲真是很糟糕,因为每个DOM节点都直接或者间接地链接到另一个节点,这导致不能在有效地隐藏DOM的同时充分地调用其全部功能。 3.相对过激的iframe:<iframe>结构隔离了组件是它们之间不能相互攻击,这中隔离策略对安全很好,但这支双刃剑也刺破了组件之间的“协作”。而mashup是需要组件协作的。 4.能力有限的ajax:采用XMLHttpRequest调用有限的服务——无法访问到被包含页的未开放服务。如果没有通过服务器的代理就无法mash up。 另外,一些富媒体(rich media)广告是mashup的。这些ad脚本需要访问页面的所有信息,包括cookie和到服务器的授权连接。而当前的浏览器设计并没有关照这个集成层次,安全模式仍然遵守着保护本站安全的原则。 所以mashup需要一个更加细粒度的解决方案。四、安全的驰骋 想要克服mashup的陋习,结束裸奔生活也非难事。完全的内容隔离是不灵活的,而开放的内容访问又是没有安全感的,看来只有进行双方商定的局部通讯才是安全驰骋的“起跑点”。 JSON出于这个观点提出了很好的解决方案。采用JSON的模块技术就能轻松的给你的mashup装上工作时必要的安全服(不仅防止触电哦!)。 JSON的作者提议一种新的HTML tag,采用它分割单一页面为多个模块。 用法如下:
<module id="NAME" href="URL" style="STYLE" />
module的三个属性: 1.id:被脚本用来访问模块节点; 2.href:定义了脚本文件或者HTML文件的url; 3.style:就是该模块的风格定义——设置模块的尺寸和位置。 每个模块有两个节点(外部节点、内部节点)。其中外部节点只暴露给外部的文档,内部节点是模块的windows对象。在这个模块中一边的脚本不能调用另一边的脚本来访问或修改另一边的数据结构和文档结构。只允许在内部、外部的节点之间进行收/发通讯。图-4 JSON的模块通讯示意图 外部节点具有发送方法,可以发送一个JSON字符串给内部节点的脚本。 外部节点还具有接收方法,可以接收来自内部节点的JSON字符串。 内部节点也有同样的发送和接收功能。 当调用发送方法时,如果对方的接收方法没有定义,那么抛出一个异常。 这样的通讯只允许通过相互协来发送和接收。而且通讯内容只能为JSON text,JSON text可以承担简单的交换和复杂的数据结构(没有交换javascript对象时发生的容量泄漏)。 和模块内部通讯机制类似,每个模块可与一个页面进行协作,而页面也可以使在模块之间的通讯更为方便。模块与页面之间通讯的能力仅仅依靠协作式发送和接收功能。而模块的来源和页面是不相关的。五、启示: JSON作者提供了达到一种全新浏览器安全模式的起点。web应用开发因此可以“领先于”浏览器技术(也许浏览器会很快跟上来)。 而这种模块的作法没有对javascript进行任何修改,而只是对HTML进行微小改动。六、参考资源: http://www.json.org/module.html
分享到:
相关推荐
### 基于Mashup的推荐书目服务的实现 #### 一、Mashup在图书馆应用背景 Mashup作为一种新兴的网络应用模式,诞生于Web2.0时代,其核心理念在于通过整合来自不同来源的数据和服务,创造出新的应用形式。这种模式...
《快速混合开发的基础》一书由Eric Griffin撰写,聚焦于快速混合开发(Rapid Mashup Development)的核心概念与实践技巧,旨在为读者提供一个全面理解并掌握Mashup开发技术的平台。Mashup,即混合应用,是一种将多个...
【IBM WebSphere Mashup】是IBM推出的一款企业级的 Mashup 解决方案,它整合了IBM Software Group | Lotus软件系列,旨在帮助企业用户快速构建、部署和管理轻量级的Web应用程序,通过组合多个来源的信息和功能,以...
基于移动网络的聚合应用(Mashup)是一种创新的软件应用模式,它将来自不同来源的数据和服务集成在一起,形成一个统一的、功能更加强大的新应用。这种应用模式在中国移动研究院的文档中得到了深入探讨,揭示了Mashup在...
Mashup是一种将两个或多个来源的数据和服务结合在一起的应用程序或网页,从而创造出新的、增值的功能和服务。Mashup通常通过API(应用程序编程接口)来获取数据和服务,并使用这些资源来构建功能丰富的应用程序。 #...
- **Mashup概念**:Mashup是一种将两个或多个来源的数据和服务组合在一起的应用程序。这种组合可以创造出新的价值或功能。 - **Mashup开发流程**: 1. **选择API源**:确定哪些外部服务或API将被集成到Mashup中。...
根据给定的信息,本文将详细探讨“基于开放平台与Mashup技术环境的Web App设计方法”。该主题由孙朝晖提出,他是飞信互联网产品的首席架构师。 ### Web应用的发展路线 随着互联网技术的不断进步,Web应用也在经历...
### Rest以及Mashup学习笔记 #### REST架构风格概述 REST(Representational State Transfer,表述性状态转移)是一种专门针对Web应用的开发风格,作为当今世界最成功的互联网超媒体分布式系统架构之一,它深刻地...
Google地图、Flickr、YouTube、Amazon等众多开放平台的涌现,使我们能够方便地将海量的外部Web数据灵活有序地结合起来,创建出各种奇妙的 Web Mashup(混搭)程序,从而大大拓展Web应用的广度和深度。事实上,Google...
【Mashup技术详解】 Mashup是一种网络应用程序的开发方式,它通过组合多个Web服务或数据源来创建新的、创新的应用。在这个案例中,我们看到的是一个基于Amazon.com的Mashup项目,这意味着它可能涉及到从Amazon的...
#### 一、Mashup技术概览 Mashup是一种将来自不同来源的数据或服务结合在一起的技术,以创建新的应用程序或Web服务。在本例中,“Mashup:Google Map + Google Weather”展示了如何将Google Maps API与Google ...
### IBM Mashup Center iWidget Specification v2.0 #### 概述 《IBM Mashup Center iWidget Specification v2.0》是一份详细介绍了iWidget组件规范的技术文档。iWidget是一种简单且可扩展的浏览器组件模型,旨在...
在IT行业中,"Mashup"是一种创新的技术应用方式,它通过将不同来源的数据和服务集成到一个单一的应用程序中,以提供新的用户体验。本项目“Google Map + Yahoo! Weather - 天气查询 Mashup”就是这样一个例子,它...
关于Mashup的ppt,纯英文版的
企业Mashup应用指南 一、Mashup概述 Mashup是糅合,是当今网络上新出现的一种网络现象,将两种以上使用公共或者私有数据库的web应用,加在一起,形成一个整合应用。Mashup在geek群体和互联网玩家之中获得了极大的...