裸奔的Mashup—如何设计安全的Ajax Mashup

2016-02-19 15:30 7 1 收藏

每个人都希望每天都是开心的,不要因为一些琐事扰乱了心情还,闲暇的时间怎么打发,关注图老师可以让你学习更多的好东西,下面为大家推荐裸奔的Mashup—如何设计安全的Ajax Mashup,赶紧看过来吧!

【 tulaoshi.com - Web开发 】

摘要:

    mashup作为一个建立web应用的新方式,它在单一页面中合并了来自多个源站点的程序和数据服务。通称,通过将javascript作为各个源页面之间的“粘合剂”使这些组件和连接被乖巧地布局在同一个页面里,这样并无需昂贵的花费就生产出有价值的“新产品”。但同时我们发现mashup在互联网上的“裸奔”...

一、谁叫mashup?


image


     由多个源站点无缝合并而成的一个web站点或web应用被称为“mashup”。它带给用户集成体验:分散在各地的页面被以一种新奇的重用模式合并、表达出来。

     典型mashup的内容通过公共接口或是API取自第三方来获得。而另一种方式就是通过包含web feeds(比如RSS、Atom)和Javascript(比如google AdSense)来获得内容。

     大家会在以下的地方对mashup有所体验:eBay、Amazon、Google、Windows Live和Yahoo开发网络。

二、“物美价廉”的乐高平台

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

image


     mashup作为一个建立web应用的新方式,它在单一页面中合并了来自多个源站点的程序和数据服务。通称,通过将javascript作为各个源页面之间的“粘合剂”使这些组件和连接被乖巧地布局在同一个页面里,这样并无需昂贵的花费就生产出有价值的“新产品”。

     mashup就如一套乐高玩具(比如乐高星战系列),把现存的有趣东西粘合在一起。

三、互联网上的“裸奔”


image


     这里的裸奔并非在光天化日之下的赤裸行为,而是将自己一丝不挂的充分暴露在互联网中,等待着种种无情的“欺辱”。

 

     下面来看一下可能导致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,采用它分割单一页面为多个模块。

     用法如下:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)
module id="NAME" href="URL" style="STYLE" /



     module的三个属性:

     1.id:被脚本用来访问模块节点;
     2.href:定义了脚本文件或者HTML文件的url;
     3.style:就是该模块的风格定义——设置模块的尺寸和位置。

     每个模块有两个节点(外部节点、内部节点)。其中外部节点只暴露给外部的文档,内部节点是模块的windows对象。在这个模块中一边的脚本不能调用另一边的脚本来访问或修改另一边的数据结构和文档结构。只允许在内部、外部的节点之间进行收/发通讯。


image



     外部节点具有发送方法,可以发送一个JSON字符串给内部节点的脚本。

     外部节点还具有接收方法,可以接收来自内部节点的JSON字符串。

     内部节点也有同样的发送和接收功能。

     当调用发送方法时,如果对方的接收方法没有定义,那么抛出一个异常。

     这样的通讯只允许通过相互协来发送和接收。而且通讯内容只能为JSON text,JSON text可以承担简单的交换和复杂的数据结构(没有交换javascript对象时发生的容量泄漏)。

     和模块内部通讯机制类似,每个模块可与一个页面进行协作,而页面也可以使在模块之间的通讯更为方便。模块与页面之间通讯的能力仅仅依靠协作式发送和接收功能。而模块的

来源:http://www.tulaoshi.com/n/20160219/1609787.html

延伸阅读
     为确保运动的安全,运动时要做到以下几点:     (1)定时定量:运动的时间最好相对固定,饭后1小时左右参加运动较为合适,因为此时血糖相对较高,运动时不易发生低血糖;运动强度应相对固定,切忌运动量忽高忽低。     (2)按时测血糖:因为运动时血糖降低易出现低血糖,...
标签: Web开发
网页制作Webjx文章简介:使用Ajax的主要原因:1、通过适当的Ajax应用达到更好的用户体验;2、把以前的一些服务器负担的工作转嫁到客户端,利于客户端闲置的处理能力来处理,减轻服务器和带宽的负担,从而达到节约ISP的空间及带宽租用成本的目的。 一、使用Ajax的主要原因 1、通过适当的Ajax应用达到更好的用户体验; ...
标签: Web开发
树型结构是一类应用非常广泛的数据结构。人类社会中宗族的族谱和现代企业的组织形式都是树型结构。在计算机领域中,文件系统中文件的管理结构、存储器管理中的页表、数据库中的索引等也都是树型结构。随着Internet的飞速发展,树型结构在浏览器/服务器(Browser/Server,简称B/S)应用系统的应用也越来越广泛。 目前,在互联网上广泛存在、...
标签: Web开发
2、JavaScript JavaScript是一在浏览器中大量使用的编程语言,,他以前一直被贬低为一门糟糕的语言(他确实在使用上比较枯燥),以在常被用来作一些用来炫耀的小玩意和恶作剧或是单调琐碎的表单验证。但事实是,他是一门真正的编程语言,有着自已的标准并在各种浏览器中被广泛支持。 3、DOM DocumentObjectModel。 ...
标签: Web开发
三、概述 虽然Garrent列出了7条Ajax的构成技术,但个人认为,所谓的Ajax其核心只有JavaScript、XMLHTTPRequest和DOM,如果所用数据格式为XML的话,还可以再加上XML这一项(Ajax从服务器端返回的数据可以是XML格式,也可以是文本等其他格式)。 在旧的交互方式中,由用户触发一个HTTP请求到服务器,服务器对其进行处理后再返回一个...

经验教程

429

收藏

54
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部