mashup作為一個建立web應用的新方式,它在單一頁面中合並了來自多個源站點的程序和數據服務。通稱,通過將javascript作為各個源頁面之間的“粘合劑”使這些組件和連接被乖巧地布局在同一個頁面裡,這樣並無需昂貴的花費就生產出有價值的“新產品”。但同時我們發現mashup在互聯網上的“裸奔”...
一、誰叫mashup?
由多個源站點無縫合並而成的一個web站點或web應用被稱為“mashup”。它帶給用戶集成體驗:分散在各地的頁面被以一種新奇的重用模式合並、表達出來。
典型mashup的內容通過公共接口或是API取自第三方來獲得。而另一種方式就是通過包含web feeds(比如RSS、Atom)和Javascript(比如google AdSense)來獲得內容。
大家會在以下的地方對mashup有所體驗:eBay、Amazon、Google、Windows Live和Yahoo開發網絡。
二、“物美價廉”的樂高平台
mashup作為一個建立web應用的新方式,它在單一頁面中合並了來自多個源站點的程序和數據服務。通稱,通過將javascript作為各個源頁面之間的“粘合劑”使這些組件和連接被乖巧地布局在同一個頁面裡,這樣並無需昂貴的花費就生產出有價值的“新產品”。
mashup就如一套樂高玩具(比如樂高星戰系列),把現存的有趣東西粘合在一起。
三、互聯網上的“裸奔”
這裡的裸奔並非在光天化日之下的赤裸行為,而是將自己一絲不掛的充分暴露在互聯網中,等待著種種無情的“欺辱”。
下面來看一下可能導致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,采用它分割單一頁面為多個模塊。
用法如下: