• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      Mashup應(yīng)用安全研究*

      2010-08-14 01:11:26
      關(guān)鍵詞:標(biāo)識符跨域同源

      陳 豐

      (重慶理工大學(xué) 計(jì)算機(jī)學(xué)院,重慶 400050)

      在Web2.0時(shí)代,一種新型的基于Web的數(shù)據(jù)集成應(yīng)用程序——Mashup,逐漸在Internet上變得越來越流行。在IBM、微軟等企業(yè)的推動(dòng)下,今后數(shù)年內(nèi)Mashup將成為主流應(yīng)用。即使商業(yè)用戶的IT技術(shù)水平并不高,同樣也可創(chuàng)建符合自身需求的Mashup,并將這些Mashup加以組合,IT產(chǎn)業(yè)的安全性也將隨之大幅提高[1]。

      目前,Mashup應(yīng)用仍然處于萌芽階段,但Mashup和其他類型的Web應(yīng)用一樣,也面臨著各種各樣的安全問題。因此,本文主要分析了Mashup的安全問題,并提出一種新的安全解決方案以提高M(jìn)ashup的安全性。

      1 Mashup(聚合)的基本概念

      Mashup是一類 Web應(yīng)用(或 Web站點(diǎn)),集成了來自多個(gè)源站點(diǎn)的內(nèi)容和代碼并將其集成到一個(gè)頁面中,其主要目標(biāo)是為用戶提供一種更加集成和方便的使用體驗(yàn)[2]。例如,www.housingmaps.com將 Google Maps上的地圖與Craigslist(美國網(wǎng)上廣告公司)的房屋信息集成在一起,因此,用戶可以從谷歌地圖上直觀地獲得不同地點(diǎn)的房屋價(jià)格信息并能據(jù)此進(jìn)行房屋租賃或銷售等業(yè)務(wù)。這種概念和呈現(xiàn)方式非常簡單,房屋價(jià)格信息和地圖數(shù)據(jù)集成之后提供的可視化功能非常強(qiáng)大。

      通常將上例中的www.housingmaps.com稱為集成者,它集成了由第三方(如Google和 Craigslist,也稱為內(nèi)容提供者)提供的內(nèi)容和代碼,并為用戶提供了所需要的一站式的服務(wù)。而第三方提供的資源,在Mashup中被稱為組件(由 HTML與JavaScript組成,旨在被集成到集成者的網(wǎng)頁中,它通常是客戶端的一些Web服務(wù))。

      Mashup應(yīng)用通常主要有兩種框架結(jié)構(gòu):服務(wù)器端框架和客戶端框架,如圖1所示。

      服務(wù)器端框架是一種傳統(tǒng)的聚合方式,首先在服務(wù)器端集成異源的內(nèi)容和服務(wù),然后將集成后的頁面返回到瀏覽器。圖1所示為框架中的集成者(i.com)實(shí)際上起到代理的作用,因此,存在一些弊端:

      (1)對第三方資源的請求/響應(yīng)都需經(jīng)過i.com,降低了性能;

      (2)大量用戶可能導(dǎo)致過度的服務(wù)器負(fù)載,i.com易成為瓶頸點(diǎn),可擴(kuò)展性差;

      (3)i.com易成為黑客的攻擊點(diǎn)。

      圖1 兩種主要的Mashup應(yīng)用框架

      近年來,隨著Ajax技術(shù)及相關(guān)技術(shù)的發(fā)展,Mashup應(yīng)用出現(xiàn)了客戶端框架,即在瀏覽器端集成異源的內(nèi)容和服務(wù),例如www.housingmaps.com就采用此種框架。同時(shí),內(nèi)容提供者(即第三方)也更愿意提供客戶端的服務(wù),如Google公司提供的Maps API就是一種非常流行的用于客戶端的組件,集成者可以方便地將該組件集成到自己的Mashup應(yīng)用中。由圖1可知,集成者(i.com)將來自異源的內(nèi)容和服務(wù)集成到一個(gè)網(wǎng)頁中,集成者和組件、組件與組件之間可以在瀏覽器端進(jìn)行通信,組件(如a.com)可以使用Ajax技術(shù)異步訪問服務(wù)器來實(shí)現(xiàn)網(wǎng)頁局部刷新的效果,給用戶帶來更好的使用體驗(yàn)?;诖?,本文主要研究了客戶端框架下的安全應(yīng)用問題。

      2瀏覽器的安全模型及Mashup的應(yīng)用安全

      2.1同源策略與“全有或全無”模型

      目前由瀏覽器所實(shí)現(xiàn)的安全模型是同源策略,最早出自Netscape Navigator2.0。這里的同源是指同協(xié)議、同域名和同端口[3]。如果2個(gè)網(wǎng)頁具有相同的協(xié)議、域名和端口,則認(rèn)為它們是同源的。所謂同源策略,是指由某一來源的腳本不允許讀取或設(shè)置來自另一不同來源的文檔的屬性。該機(jī)制將異源的Web應(yīng)用程序分離開,即如果多個(gè)瀏覽器窗口、<frame>或<iframe>元素(下文統(tǒng)一用<frame>表示)中的文檔是從不同的服務(wù)器下載的,則它們無法相互訪問數(shù)據(jù)和腳本,瀏覽器的腳本只被允許訪問來自同源的資源(如DOM和Cookie等資源),并能創(chuàng)建XMLHttpRequest對象異步訪問文檔來源所指服務(wù)器的資源。 例 如,<frame>A(來自 http://a.com)不能訪問<frame>B(來自 http://b.com)中的任何 DOM 元素,反之亦然。來自a.com的腳本也只能創(chuàng)建XMLHttpRequest對象異步訪問a.com,而不能異步訪問b.com。

      但上文所提的同源策略有一個(gè)例外,文檔中包含的腳本資源文件和圖像文件被視為文檔的組成部分,因此認(rèn)為與文檔是同源的,即使它們實(shí)際上存在于不同的網(wǎng)域中。例如,a.com/service.html中包含<script src=“http://b.com/lib.js”>,雖然 lib.js來自 b.com,但被認(rèn)為是 a.com/service.html的組成部分,即lib.js與service.html是同源的,都來自 a.com,因此 lib.js(雖然來自 b.com)中的腳本也就能夠訪問a.com/service.html的DOM等資源,并能創(chuàng)建XMLHttpRequest對象異步訪問a.com。

      同源策略比較適用于Internet發(fā)展的早期。由于這時(shí)很少網(wǎng)站將重要的應(yīng)用邏輯放在瀏覽器端,即使有,這些網(wǎng)站也只限于自己的服務(wù)器而不同第三方打交道,因此,同源策略能有效避免惡意的攻擊。但I(xiàn)nternet發(fā)展到今天,情況已有了很大的不同。許多集成者更愿意集成多個(gè)來源的內(nèi)容到他們的站點(diǎn)中,為用戶提供定制化和更有附加值的服務(wù)。由前面的分析可知,Mashup的本質(zhì)就是要集成多個(gè)來源的內(nèi)容和服務(wù),而同源策略卻是不允許使用來自不同源的內(nèi)容。這導(dǎo)致在開發(fā)Mashup應(yīng)用時(shí)只能采用“全有或全無”模型,即站點(diǎn)a.com或者完全不信任來自站點(diǎn)b.com的內(nèi)容,在集成時(shí)將來自b.com的內(nèi)容隔離在<frame>元素中;或者完全信任來自站點(diǎn)b.com的腳本,在集成時(shí)將來自站點(diǎn)b.com的腳本放到<script>標(biāo)記中,而這些腳本能完全訪問來自a.com的資源。因此,需要實(shí)現(xiàn)一種方法使得瀏覽器能夠支持合法的跨域數(shù)據(jù)訪問,但是無需犧牲終端用戶的安全和對自身數(shù)據(jù)的控制。

      2.2 Mashup應(yīng)用安全

      Mashup擁有兩個(gè)最本質(zhì)的特性:互通信能力和安全性?;ネㄐ拍芰κ侵讣烧吲c組件或組件間相互通信的能力。在簡單的Mashup中,可能不需要這種互通信能力,此時(shí)可將組件包含在<frame>中,利用同源策略來隔離異源的資源以達(dá)到保護(hù)的目的。但在越來越趨于復(fù)雜的Mashup應(yīng)用中,集成者與組件間確實(shí)需要相互通信的能力。安全性要求來自某源的組件不能存取來自另一源的組件的保密信息,如DOM、cookies等信息。根據(jù)同源策略及“全有或全無”模型,當(dāng)不同來源的組件集成到集成者的同一網(wǎng)頁時(shí),相互之間不能通信,除非采取一些技術(shù)手段來繞過同源策略的限制。結(jié)果通常造成開發(fā)人員被迫必須在安全性和功能之間進(jìn)行權(quán)衡,導(dǎo)致為了滿足功能而犧牲應(yīng)用的安全性。為此,已經(jīng)存在的Mashup應(yīng)用采用了許多繞開同源策略的措施:

      (1)Ajax代理,Mashup服務(wù)器端框架經(jīng)常使用的一種方法[4]。例如,由于同源策略的限制,a.com/service.html中的JavaScript代碼是不能訪問位于b.com中的某一Web服務(wù)ServiceB的,但可以在a.com中建立新的Web服務(wù) ServiceProxy,則 a.com/service.html可通過 Ajax訪問a.com/ServiceProxy,而 ServiceProxy的功能就是將請求轉(zhuǎn)發(fā)給b.com/ServiceB,由ServiceB產(chǎn)生的響應(yīng)結(jié)果再按原路徑返回給a.com/service.html。

      (2)<frame>片段標(biāo)識符技術(shù),Mashup客戶端框架經(jīng)常使用的方法。通過frame.src屬性的片段標(biāo)識符(URL中#符號后的部分),使用了頁面腳本和隱藏的<frame>標(biāo)記之間進(jìn)行通信以繞過同源策略的限制。

      當(dāng)前開發(fā)Mashup時(shí),集成者通常將第三方提供的組件封裝到<frame>標(biāo)記中,利用同源策略所提供的安全機(jī)制,以實(shí)現(xiàn)安全的目的。但集成者與組件間通常更需要協(xié)作,筆者認(rèn)為在瀏覽器端利用<frame>片段標(biāo)識符技術(shù)進(jìn)行通信時(shí)應(yīng)當(dāng)滿足以下3個(gè)主要的安全因素:

      (1)數(shù)據(jù)保密。在Mashup應(yīng)用中,經(jīng)常有這樣的場景:如用戶可能在某一網(wǎng)頁中輸入內(nèi)容,并希望此內(nèi)容將只提供給特定的組件,而不被其他第三方截獲?;蛘撸烧摺⒔M件提供者和用戶可能共享一個(gè)秘密信息,而不希望此信息被無關(guān)的第三方截獲。因此,在瀏覽器端實(shí)現(xiàn)消息傳遞機(jī)制時(shí),應(yīng)能保證消息只能被相關(guān)的參與方獲取,而其他無關(guān)的第三方不能截獲到此消息。

      (2)身份驗(yàn)證。參與通信的雙方能夠相互進(jìn)行身份驗(yàn)證是瀏覽器端消息傳遞機(jī)制另一個(gè)很重要的安全要求。在Mashup應(yīng)用中進(jìn)行身份驗(yàn)證主要是指通信雙方能驗(yàn)證彼此的域名。

      (3)數(shù)據(jù)完整。數(shù)據(jù)完整是指集成者和組件提供者提供給用戶的內(nèi)容是沒有被攻擊者篡改過的,也即意味著被攻擊者篡改過的消息能被檢測出來。

      3片段標(biāo)識符安全通信技術(shù)

      3.1基于片段標(biāo)識符的跨域數(shù)據(jù)訪問

      <frame>標(biāo)記能夠在一個(gè)HTML文件中封裝和顯示另一個(gè)完整的HTML文件。通常稱<frame>所在的網(wǎng)頁為父頁面,而<frame>所包含的網(wǎng)頁(通過向 frame.src屬性指定一個(gè)URL來確定)稱為子頁面。

      目前開發(fā)Mashup應(yīng)用時(shí),集成者通常將組件封裝到<frame>標(biāo)記中。當(dāng)<frame>的源URL與其父頁面同源時(shí),根據(jù)同源策略,父頁面中的JavaScript可通過<frame>的DOM訪問它的所有內(nèi)容。同樣,<frame>也可以通過其父頁面的DOM訪問父頁面的所有內(nèi)容。然而,當(dāng)異源時(shí),父頁面不能訪問<frame>的內(nèi)容,<frame>也無法訪問父頁面的內(nèi)容。此時(shí),可利用frame.src屬性的片段標(biāo)識符 (如 http://a.com/proxy.html#data_here,# 符 號 后 的 data_here就是要傳遞的數(shù)據(jù))來實(shí)現(xiàn)跨域數(shù)據(jù)訪問。<frame>的外部代碼(如主頁面中的Javascript代碼)不能讀取frame.src,但可以重寫 frame.src,此即 frame.src屬性的只寫特性。這樣,<frame>的外部代碼就可以根據(jù)已知文檔的 URL,構(gòu)造“URL+#+要傳遞的數(shù)據(jù)”字符串,指定給frame.src屬性,并將觸發(fā)子頁面的onLoad事件,于是在子頁面的onLoad事件處理程序中可接受父頁面?zhèn)鬟^來的數(shù)據(jù)并決定下一步的操作。如圖2所示,集成者i.com/main.html由于同源策略的限制,在瀏覽器端不能訪問a.com的資源。因此,可通過以下步驟實(shí)現(xiàn)i.com/main.html將數(shù)據(jù)data_here傳送給a.com。

      圖2 基于<frame>片段標(biāo)識符的跨域數(shù)據(jù)訪問

      (1)i.com/main.html(即父頁面,包含 frame1元素)設(shè)置 frame1.src=“http://a.com/proxy.html#data_here”。

      (2)frame1下載頁面a.com/proxy.html。通過frame.src來傳遞數(shù)據(jù)可以使用#將數(shù)據(jù)加到frame的URL結(jié)尾來實(shí)現(xiàn)。

      (3)子頁面(a.com/proxy.html)的 onLoad事件被激活。此時(shí),可通過window.location.hash取出i.com/main.html傳遞過來的數(shù)據(jù)data_here。

      (4)由于frame1和組件a.com同源,故能相互訪問彼此的資源,即組件a.com也就能訪問i.com/main.html傳過來的數(shù)據(jù)data_here。

      當(dāng)組件a.com處理完數(shù)據(jù)data_here后,需要將數(shù)據(jù)data_toI傳遞給父頁面i.com/main.html,也可以通過frame1來傳遞嗎?答案是否定的,frame1不能給它的父頁面?zhèn)鬟f任何消息,因?yàn)樗鼈兾挥诓煌脑?。但是frame1(a.com)可以包含另一個(gè)frame2,圖 2中,frame1通過設(shè)置frame2.src為父頁面的 URL(即 i.com)。 這時(shí),i.com/main.html包括 frame1(域?yàn)?a.com),而 frame1又包含 frame2(域?yàn)閕.com)。同時(shí),可以發(fā)現(xiàn)frame2.parent.parent正是i.com/main.html,且 frame2和 main.html同源,因此在 frame2中可以通過frame2.parent.parent訪問main.html的任何內(nèi)容,調(diào)用main.html中的JavaScript函數(shù)。實(shí)現(xiàn)步驟如下:

      (1)組件 a.com通過在 frame1(a.com/proxy.html)中設(shè)置 frame2.src=“http://i.com/proxy.html#data_toI”;

      (2)frame2下載頁面i.com/proxy.html。之后子頁面的onLoad事件被激活,在onLoad事件中可通過window.location.hash取得組件a.com傳過來的數(shù)據(jù)data_toI。

      (3)由 于 frame2(i.com/proxy.html)和 i.com/main.html同源,故在 frame2中可調(diào)用 main.html的 receiveFromA函數(shù)將數(shù)據(jù) data_toI傳遞給main.html。

      但上述使用<frame>片段標(biāo)識符的跨域數(shù)據(jù)訪問存在一個(gè)安全問題:不確定數(shù)據(jù)的來源。當(dāng)main.html通過frame1.src向組件a.com傳送數(shù)據(jù)data_here時(shí),由于同源策略的安全機(jī)制,雖然可以保證數(shù)據(jù)能被組件a.com獲得。但是,當(dāng)組件a.com得到數(shù)據(jù)data_here時(shí),沒有直接的方法得知數(shù)據(jù)的來源。而在大多數(shù)情況下,不確定來源的數(shù)據(jù)是不安全的。因此,必須要有能實(shí)現(xiàn)對通信雙方的身份進(jìn)行驗(yàn)證的方法克服此安全漏洞。受TCP三次握手的啟發(fā),本文提出一種利用共享密鑰技術(shù)在瀏覽器端實(shí)現(xiàn)跨域通信雙方身份驗(yàn)證的方法,如圖3所示。父頁面 i.com/main.html首先產(chǎn)生密鑰SK1,并使用<frame>片段標(biāo)識符技術(shù)將SK1傳遞給子頁面frame1(a.com/proxy.html)。接收方frame1可通過將密鑰SK1作為數(shù)據(jù)包的一部分傳回main.html以證明接收方frame1確實(shí)來源為a.com。但是frame1還需要證明發(fā)送方是來自于i.com,因此,frame1又產(chǎn)生一個(gè)新的密鑰SK2,并將SK1和SK2一起傳送給main.html,若 main.html能將SK2作為密鑰再傳給frame1就能證明發(fā)送方main.html確實(shí)來自i.com。至此,main.html和frame1都擁有了密鑰 SK2,故可將SK2作為共享密鑰,并使用它來完成接下來的通信。圖3所示main.html將“SK2+要傳的數(shù)據(jù)”作為數(shù)據(jù)包傳給 frame1,frame1將先驗(yàn)證密鑰是否等于 SK2,如果是,則接受傳過來的數(shù)據(jù)。因此,對于惡意的攻擊可以很容易被識別和去除。

      圖3 利用密鑰來驗(yàn)證身份

      3.2安全分析

      從數(shù)據(jù)保密、身份驗(yàn)證和數(shù)據(jù)完整3個(gè)方面來分析上述基于<frame>片段標(biāo)識符的跨域數(shù)據(jù)訪問方案的安全性。

      (1)數(shù)據(jù)保密。利用瀏覽器提供的同源策略限制和frame.src的只寫特性來實(shí)現(xiàn)數(shù)據(jù)保密性。在父頁面和<frame>之間傳送的數(shù)據(jù)不會(huì)被父頁面上其他的DOM元素看到,因?yàn)椋糵rame>與父頁面處在不同的源。而且數(shù)據(jù)不出現(xiàn)在瀏覽器緩存中,數(shù)據(jù)也不會(huì)跨過網(wǎng)絡(luò),因此可以認(rèn)為數(shù)據(jù)包只能被接收的<frame>或來自a.com的其它頁面觀察到。

      (2)身份驗(yàn)證。圖3中利用共享密鑰的技術(shù)能保證瀏覽器客戶端跨域通信雙方身份的驗(yàn)證。frame1只有當(dāng)其將父頁面?zhèn)鬟^來的密鑰SK1再傳回父頁面時(shí),才能讓它的身份得到驗(yàn)證;類似的,父頁面也只有將密鑰SK2傳回frame1時(shí),才能驗(yàn)證它的身份。之后,通過利用父頁面和frame1的共享密鑰SK2來保證雙方通信的機(jī)密性。

      (3)數(shù)據(jù)完整。攻擊者篡改過的數(shù)據(jù)能被檢測出來。要篡改通信的數(shù)據(jù),攻擊者需要知道共享密鑰SK2,否則在目的地,傳過來的數(shù)據(jù)包將被拒絕并被丟棄。因此,沒有經(jīng)過身份驗(yàn)證的組件是不能篡改數(shù)據(jù)的。

      當(dāng)前所有瀏覽器端所實(shí)現(xiàn)的安全模型是同源策略,其導(dǎo)致了異源內(nèi)容間只能是“完全信任”或“完全不信任”的結(jié)果。隨之帶來的問題是:Mashup不能在實(shí)現(xiàn)功能性需求的同時(shí)也能很好地解決安全問題。因此,需要瀏覽器實(shí)現(xiàn)一種新的安全模型,使得瀏覽器能夠支持合法的跨域數(shù)據(jù)訪問,而無需犧牲終端用戶的安全。但是,主流瀏覽器要實(shí)現(xiàn)新的安全模型并在業(yè)內(nèi)普遍使用需要幾年的時(shí)間,同時(shí)一些研究者提出的解決方案中或者要求改進(jìn)當(dāng)前的瀏覽器環(huán)境;或者不能提供一個(gè)靈活和安全的點(diǎn)到點(diǎn)的域間通信機(jī)制[5-6]。本文提出了一種新的域間通信機(jī)制,它不需要對當(dāng)前的瀏覽器環(huán)境進(jìn)行任何修改就可適用,并且主要考慮了3個(gè)安全因素:數(shù)據(jù)保密、身份驗(yàn)證和數(shù)據(jù)完整。在不遠(yuǎn)的將來,通過不斷改善瀏覽器技術(shù),及增加新的Web標(biāo)準(zhǔn)使Mashup更加安全,Mashup方式也將會(huì)得到更廣泛的應(yīng)用。

      [1]佚名.Garter:IT業(yè)界未來四年的十大新技術(shù)[EB/OL].http://networking.ctocio.com.cn/NetInformation/105/8147605.shtml,2008-06-03.

      [2]Jyrki Hakkola.Mashup Security[EB/OL].http://www.tml.tkk.fi/Opinnot/T-111.5550/2008/seminaari_hakkola_jyrki.pdf,2008-11-04.

      [3]AaronBohannon.BuildingSecureWebMashups[M/OL].www.cis.upenn.edu/~bohannon/mashups.pdf,2008-7-16.

      [4]陳臘梅,李為.AJAx跨域訪問的研究與應(yīng)用[J].計(jì)算機(jī)工程與設(shè)計(jì),2008(11):5680-5684.

      [5]Frederik DeKeukelaere, SumeerBhola.SMash:Secure Component Model for Cross-Domain Mashups on Unmodified Browsers[EB/OL].www2008.org/papers/pdf/p535-dekeukelaereA.pdf,2008-7.

      [6]JACKSON C, WANG H J.Subspace:Secure CrossDomain Communicationfor Web Mashups[EB/OL].www.collinjackson.com/research/papers/fp801-jackson.pdf.2007-5.

      猜你喜歡
      標(biāo)識符跨域同源
      藥食同源
      ——紫 蘇
      淺析5G V2X 通信應(yīng)用現(xiàn)狀及其側(cè)鏈路標(biāo)識符更新技術(shù)
      兩岸年味連根同源
      跨域異構(gòu)體系對抗聯(lián)合仿真試驗(yàn)平臺
      基于多標(biāo)簽協(xié)同學(xué)習(xí)的跨域行人重識別
      基于底層虛擬機(jī)的標(biāo)識符混淆方法
      為群眾辦實(shí)事,嶗山區(qū)打出“跨域通辦”組合拳
      以同源詞看《詩經(jīng)》的訓(xùn)釋三則
      G-SRv6 Policy在跨域端到端組網(wǎng)中的應(yīng)用
      基于區(qū)塊鏈的持久標(biāo)識符系統(tǒng)①
      蕉岭县| 濉溪县| 加查县| 屏南县| 油尖旺区| 嘉兴市| 芮城县| 安阳县| 蒲江县| 房产| 锦州市| 汉沽区| 遂川县| 瑞丽市| 枣阳市| 清水河县| 霍林郭勒市| 新郑市| 老河口市| 新宁县| 任丘市| 霸州市| 抚宁县| 屏东市| 沿河| 梁山县| 沙坪坝区| 柘城县| 河间市| 洪泽县| 霸州市| 刚察县| 上思县| 土默特左旗| 思茅市| 微山县| 商河县| 华亭县| 衡水市| 兴国县| 盐源县|