專利名稱::提供針對跨域交互的運(yùn)行時(shí)脆弱性防護(hù)的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明一般地涉及Web應(yīng)用,并且具體而言涉及一種用于為Web應(yīng)用提供針對跨域交互的運(yùn)行時(shí)脆弱性防護(hù)的方法和系統(tǒng)。
背景技術(shù):
:Web應(yīng)用是一種基于Web的應(yīng)用,指的是用戶界面駐留在Web瀏覽器中的任何應(yīng)用程序,它是一些Web網(wǎng)頁和用來完成某些任務(wù)的其它資源的集合。Web應(yīng)用是典型的客戶機(jī)/服務(wù)器體系結(jié)構(gòu)的產(chǎn)物,其能夠通過網(wǎng)絡(luò)使得客戶機(jī)和服務(wù)器進(jìn)行通信。常見的留言版、聊天室和論壇(BBS)等,都是Web應(yīng)用。不過這些應(yīng)用相對比較簡單,而Web應(yīng)用的真正核心主要是對數(shù)據(jù)進(jìn)行處理。近來,隨著SaaS(Software-as-a-Service,軟件即服務(wù))應(yīng)用的發(fā)展,經(jīng)常需要將來自多個(gè)源(它們處于不同域)的內(nèi)容合并為集成的內(nèi)容。SaaS應(yīng)用是一種Web應(yīng)用,它是隨著因特網(wǎng)技術(shù)的M和應(yīng)用軟件的成熟而逐漸發(fā)展的一種完全創(chuàng)新的軟件應(yīng)用模式。它是一種通過因特網(wǎng)提供軟件的模式,供應(yīng)商將應(yīng)用軟件統(tǒng)一部署在自己的服務(wù)器上。用戶可以根據(jù)自己實(shí)際需求,通過因特網(wǎng)向供應(yīng)商定購所需的應(yīng)用軟件服務(wù),按定購的服務(wù)多少和時(shí)間長短向供應(yīng)商支付費(fèi)用,并通過因特網(wǎng)獲得供應(yīng)商提供的服務(wù)。用戶不用購買軟件,而是向供應(yīng)商租用基于Web的軟件,來管理企業(yè)經(jīng)營活動,且無需對軟件進(jìn)行維護(hù),而供應(yīng)商會全權(quán)管理和維護(hù)軟件。供應(yīng)商在向客戶提供因特網(wǎng)應(yīng)用的同時(shí),也提供軟件的離線操作和本地?cái)?shù)據(jù)存儲,讓用戶隨時(shí)隨地都可以使用其定購的軟件和服務(wù)。在類似于SaaS應(yīng)用的Web應(yīng)用的上下文中,常常需要將來自多個(gè)源5的內(nèi)容合并在一起。例如,在銷售人員自動管理(SFA,SalesForceAutomation)應(yīng)用中,可能需要將來自另一服務(wù)器的聯(lián)系人管理信息集成進(jìn)來。此時(shí)需要進(jìn)行跨域的內(nèi)容交互。在實(shí)踐中,由于SaaS應(yīng)用常常需要合并來自處于不同域的其它源的數(shù)據(jù),其不得不在安全性和功能性之間做出選擇。在一些傳統(tǒng)方案中,對于安全性的考慮通常涉及以下幾種方案,但它們均具有各自的局限性。-輸入£。輸入驗(yàn)證主要基于預(yù)先定義的模式來過濾用戶輸入值。但是,如果用戶直接從第三方服務(wù)器獲得內(nèi)容,則輸入驗(yàn)證功能將被繞開,從而無法防止來自該內(nèi)容的潛在的、惡意的攻擊。瀏覽器端插件。瀏覽器端插件(諸如Flash插件)可以支持在各個(gè)域之間的通信,并提供多種跨域能力。但是,出于安全性、憶私性或者兼容性等等的原因,一些用戶不愿意安裝瀏覽器端插件。-服務(wù)器端代理。服務(wù)器端代理過濾來自第三方服務(wù)器的數(shù)據(jù),并使得所述數(shù)據(jù)對于客戶端呈現(xiàn)為同源數(shù)據(jù)。由此,瀏覽器可以首先連接到代理以獲取第三方內(nèi)容。該方案的缺點(diǎn)在于,增加了通過代理連接到第三方服務(wù)器的等待時(shí)間。.片段標(biāo)識符(fragmentidentifier)消息傳送。一些方案可以采用片段標(biāo)識符來實(shí)現(xiàn)跨域通信。其將弁message附加到URL(統(tǒng)一資源定位符)之后用于傳輸消息。該方案的缺點(diǎn)在于,當(dāng)用戶按下瀏覽器中的"后退"按鈕時(shí)將會中斷該通信。并且,所傳送的消息具有長度限制?,F(xiàn)今,在很多Web應(yīng)用中,使用基于AJAX的富Web應(yīng)用(RichWebApplication)進(jìn)行跨域交互。術(shù)語AJAX是"Asynchronous(異步)JavaScript+XML"的簡寫。AJAX的核心JavaScript對象XmlHttpRequest支持異步請求。簡而言之,XmlHttpRequest對象允許客戶端的JavaScript腳本向服務(wù)器提出請求并處理響應(yīng),而不用在瀏覽器中重新刷新頁面,并且不會阻塞用戶。對XmlHttpR叫uest對象的詳細(xì)定義與描述請參見W3C(萬維網(wǎng)聯(lián)盟)的規(guī)范(http:〃www.w3.org/TR/XMLHttpRequest)。然而,出于安全性的考慮,基于AJAX的富Web應(yīng)用只能訪問應(yīng)用所在的當(dāng)前域中的資源,而不能實(shí)現(xiàn)跨域訪問,這也被稱為同源限制(sameoriginconstraint)的策略。例如,站點(diǎn)domainl.com中的AJAX只能訪問本站點(diǎn)內(nèi)的資源,而不能跨域訪問站點(diǎn)domain2.com中的資源。然而,在SaaS應(yīng)用中,屬于某一域的Web應(yīng)用有時(shí)需要對屬于另一域的服務(wù)器做出AJAX請求,以便調(diào)用該服務(wù)器中的服務(wù)或資源。上述的跨域訪問受到現(xiàn)有的XmlHttpR叫uest實(shí)現(xiàn)的限制。富Web應(yīng)用還可以提供一種新服務(wù),其返回JSON(JavaScriptObjectNotation,JavaScript對象表示法)格式而不是XML格式的響應(yīng)。JSON是一種輕量級的計(jì)算機(jī)數(shù)據(jù)交換格式。它是一種用于表示簡單數(shù)據(jù)結(jié)構(gòu)和關(guān)聯(lián)數(shù)組(對象)的基于文本的、人類可讀的格式。JSON格式常常被用于在網(wǎng)絡(luò)連接上傳輸格式化的數(shù)據(jù)。JSON可以通過以下兩種結(jié)構(gòu)構(gòu)建"名稱/值"對的集合,它可以被理解為對象(object)、紀(jì)錄(record)、結(jié)構(gòu)(struct)、字典(dictionary)、哈希表(hashtable)、有鍵歹'J表(keyedlist)、或者關(guān)聯(lián)數(shù)組(associativearray);或者值的有序列表。在大部^S吾言中,它被理解為數(shù)組(array)。這使得同一種數(shù)據(jù)格式在同樣基于這些結(jié)構(gòu)的編程語言之間交換成為可能。事實(shí)上,如果使用動態(tài)腳本標(biāo)簽方案(dynamicscripttagapproach)來做出Web服務(wù)請求,并且指定一種JavaScript回叫(callback)功能,則可以實(shí)現(xiàn)以無縫、跨站方式對Web月良務(wù)進(jìn)行自由訪問。出于此目的,JSONP(JSONwithpadding,具有填充符的JSON)被提出作為從外部域獲取JSON的一種標(biāo)準(zhǔn),其中指定了回叫功能作為呼叫本身的輸入變量。但是,JSONP在從第三方服務(wù)檢索數(shù)據(jù)時(shí)具有安全問題,不能阻止第三方數(shù)據(jù)的惡意攻擊。例如參見圖1,圖1示出了Web應(yīng)用通過JSONP進(jìn)4亍跨域交互的弱點(diǎn)攻擊的示例圖。如圖1所示,托管服務(wù)器100可以與客戶端瀏覽器110進(jìn)行通信,而客戶端瀏覽器110可以與第三方服務(wù)器120進(jìn)行通信,其中托管服務(wù)器100托管用于在客戶端瀏覽器110上執(zhí)行的Web應(yīng)用。由此,托管服務(wù)器100通過客戶端瀏覽器110向第三方服務(wù)器120提交用于訪問第三方內(nèi)容的請求130,在請求130中,指定并定義了回叫功能(getConlnfo),用于把第三方服務(wù)器120提供的信息呈現(xiàn)給用戶,所述信息在此示例中例如是聯(lián)系人信息。該回叫功能指的是由第三方服務(wù)器U0可以在返回的響應(yīng)140中使用的功能。在正常的情況下,第三方服務(wù)器120使用所指定的回叫功能(getConlnfo)將聯(lián)系人信息以JSON格式提供給用戶。然后瀏覽器110可以接收并讀取JSON格式的該信息,并以回叫功能中指定的方式將信息呈現(xiàn)給用戶。然而,在實(shí)踐中,該方案存在易于遭受惡意攻擊的脆弱性。在一種情形中,如圖1中的響應(yīng)140的上半部分所示,惡意攻擊者可以在正常的聯(lián)系人信息后面附加惡意代碼,其位于〈script〉和〈/script〉之間。以此方式,客戶端瀏覽器110在接收到響應(yīng)信息并執(zhí)行回叫功能時(shí),該惡意代碼也會被一同執(zhí)行,從而使得客戶端具有風(fēng)險(xiǎn),例如,客戶端的敏感信息可能被泄露,或者客戶端被植入惡意腳本等等。在另外一種情形中,如圖l中的響應(yīng)140的下半部分所示,惡意攻擊者可以在響應(yīng)信息中重新定義一個(gè)新的功能,其具有與回叫功能相同的名稱(getConlnfo),并在該新功能中包含惡意代碼,其位于〈script〉和々script〉之間。以此方式,客戶端瀏覽器110在接收到信息并執(zhí)行回叫功能時(shí),實(shí)際被執(zhí)行的不是客戶端定義的回叫功能,而是惡意攻擊者定義的新功能,從而使得客戶端具有同樣的風(fēng)險(xiǎn)。由此可見,現(xiàn)有技術(shù)的各個(gè)方案存在多種缺點(diǎn),它們無法同時(shí)滿足安全性和功能性的需求。因此,為了使得Web應(yīng)用、尤其是SaaS應(yīng)用能夠與其它域進(jìn)行交互以便獲取以及并入來自其它域的數(shù)據(jù),同時(shí)兼顧足夠的安全性,對于本領(lǐng)域技術(shù)人員來說,存在對于一種用于為Web應(yīng)用提供針對跨域交互的運(yùn)行時(shí)脆弱性防護(hù)的方法和系統(tǒng)的需要。
發(fā)明內(nèi)容在本發(fā)明的第一方面中,提出了一種用于為Web應(yīng)用提供針對跨域交互的運(yùn)行時(shí)脆弱性防護(hù)的方法,所述方法包括由Web應(yīng)用創(chuàng)建第一iFrame對象和第二iFrame對象,其中所述第8一和第二iFrame對象同屬于Web應(yīng)用所在的^f氐級域;由所述第一iFrame對象創(chuàng)建一個(gè)對象,并4吏所述第二iFrame共享所述所創(chuàng)建的對象;將所述第二iFrame對象所屬的域提升為上級域;在所述共享對象中,由所述第二iFrame對象創(chuàng)建一個(gè)源訪問功能,用于向第三方服務(wù)器提交訪問其上的內(nèi)容的請求;以及在所述共享對象中,由所述第一iFrame對象創(chuàng)建一個(gè)凈化(sanitize)功能,用于對由所述第二iFrame對象從第三方服務(wù)器接收的響應(yīng)進(jìn)行凈化。在本發(fā)明的第二方面中,提出了一種用于為Web應(yīng)用提供針對跨域交互的運(yùn)行時(shí)脆弱性防護(hù)的系統(tǒng),所述系統(tǒng)包括用于由Web應(yīng)用創(chuàng)建第一iFrame對象和第二iFrame對象的裝置,其中所述第一和第二iFrame對象同屬于Web應(yīng)用所在的低級域;用于由所述第一iFrame對象創(chuàng)建一個(gè)對象,并^f吏所述第二iFrame共享所述所創(chuàng)建的對象的裝置;用于將所述第二iFrame所屬的域提升為上級域的裝置;用于在所述共享對象中,由所述第二iFrame對象創(chuàng)建一個(gè)源訪問功能的裝置,所述源訪問功能用于向第三方服務(wù)器提交訪問其上的內(nèi)容的請求;以及用于在所述共享對象中,由所述第一iFrame對象創(chuàng)建一個(gè)凈化功能的裝置,所述凈化功能用于對由所述第二iFrame對象從第三方服務(wù)器接收的響應(yīng)進(jìn)行凈化。根據(jù)本發(fā)明的方法和系統(tǒng),避免了大范圍重寫后臺代碼,從而,在保持了系統(tǒng)對于Web應(yīng)用的跨域交互的功能性需求的同時(shí),還增強(qiáng)了對于系統(tǒng)的脆弱性防護(hù),并可以提供透明的運(yùn)行時(shí)安全防護(hù)以及即時(shí)防護(hù),而不用改變后端應(yīng)用邏輯。并且,當(dāng)本發(fā)明的方法和系統(tǒng)被實(shí)現(xiàn)為Web應(yīng)用防火墻(WAF)時(shí),既不需要安^戶端的瀏覽器插件,也不需要月良務(wù)器端的代理,從而減少了請求等待時(shí)間,以及增加了系統(tǒng)的整個(gè)工作效率。在附帶的權(quán)利要求中闡明了被認(rèn)為是本發(fā)明新穎特性的特征。然而,通過參考以下結(jié)合附圖的說明性實(shí)施例的詳細(xì)描述,將最好地理解本發(fā)明本身以及其優(yōu)選^f吏用模式、另外的目的和優(yōu)點(diǎn),在附圖中圖1示出了Web應(yīng)用通過JSONP進(jìn)4亍跨域交互的弱點(diǎn)攻擊的示例圖;圖2示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的一種用于為Web應(yīng)用提供針對跨域交互的運(yùn)行時(shí)脆弱性防護(hù)的方法的示例性流程圖;圖3示出了初始登錄和準(zhǔn)備階段的示例性流程圖;圖4示出了圖3的初始登錄和準(zhǔn)備階段完成之后的頁面示意圖;圖5示出了在圖4的頁面示意圖中執(zhí)行跨域交互的具體實(shí)現(xiàn)方式;以及圖6示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的一種為Web應(yīng)用提供針對跨域交互的運(yùn)行時(shí)脆弱性防護(hù)的系統(tǒng)的示意性框圖。需要注意,在全體附圖中,相同或相似的標(biāo)號指代的是相同或相似的單元或組件。具體實(shí)施例方式在下文中將結(jié)合附圖對本發(fā)明的示范性實(shí)施例進(jìn)行描述。為了清楚和簡明起見,在說明書中并未描述實(shí)際實(shí)現(xiàn)方式的所有特征。然而,應(yīng)該了解,在開發(fā)任何這種實(shí)際實(shí)施例的過程中必須做出很多實(shí)現(xiàn)方式所特定的決定,以便實(shí)現(xiàn)開發(fā)人員的具體目標(biāo),例如符合與系統(tǒng)及業(yè)務(wù)相關(guān)的那些限制條件,其中,這些限制條件會隨著實(shí)施方式的不同而改變。此外,還應(yīng)該了解,雖然開發(fā)工作有可能是非常復(fù)雜和費(fèi)時(shí)的,但對得益于這個(gè)公開內(nèi)容的本領(lǐng)域技術(shù)人員來說,這種開發(fā)工作僅僅是例行的任務(wù)。此外,還需要說明的一點(diǎn)是,為了避免因不必要的細(xì)節(jié)而混淆了本發(fā)明,在附圖中僅僅示出了與根據(jù)本發(fā)明的方案密切相關(guān)的裝置結(jié)構(gòu)和/或處理步驟,而省略了與本發(fā)明關(guān)系不大的其它細(xì)節(jié)。10在以下對本發(fā)明的描述中,本發(fā)明的方法可以通過Web應(yīng)用防火墻(WAF)來實(shí)現(xiàn),該Web應(yīng)用防火墻可以是硬件組件,其例如可以作為服務(wù)器和客戶端瀏覽器之間的通信中介,即,服務(wù)器和客戶端之間進(jìn)行的任意通信都將通過該WAF。這樣,既不需要安^戶端的瀏覽器插件,也不需要服務(wù)器端的代理,從而減少了請求等待時(shí)間,以及增加了系統(tǒng)的整個(gè)工作效率。當(dāng)然,本領(lǐng)域技術(shù)人員可以理解,在本發(fā)明的其它實(shí)施例中,本發(fā)明的方法還可以被實(shí)現(xiàn)為客戶端插件或者服務(wù)器端的代理。以下是對本發(fā)明及其實(shí)施例的詳細(xì)介紹。首先參見圖2,圖2示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的一種用于為Web應(yīng)用提供針對跨域交互的運(yùn)行時(shí)脆弱性防護(hù)的方法的示例性流程圖。如圖2所示,所述方法開始于框200,并進(jìn)行到框205。在框205,執(zhí)行初始登錄和準(zhǔn)備階段的各個(gè)步驟。該初始登錄和準(zhǔn)備階段可以是響應(yīng)于客戶端向服務(wù)器提出的請求而執(zhí)行。作為具體說明,以下結(jié)合圖3示出了初始登錄和準(zhǔn)備階段的示例性流程圖。如圖3所示,所述初始登錄和準(zhǔn)備階段開始于框300,并進(jìn)行到框305。首先在框305,在服務(wù)器發(fā)送到客戶端的響應(yīng)中插入用于初始化的JavaScript邏輯。如上所述,該步驟可以由WAF來執(zhí)行。在框310,由客戶端接收經(jīng)修改的響應(yīng),從而客戶端可以執(zhí)行響應(yīng)中插入的JavaScript邏輯。如此,根據(jù)所述邏輯,在框315,在一個(gè)低級域的頁面中創(chuàng)建第一iFrame對象和第二iFrame對象,該低級域是用于實(shí)際獲取并向用戶呈現(xiàn)第三方服務(wù)器的內(nèi)容的域,其例如可以是cc.bb.aa.com。在此時(shí),第一iFrame對象和第二iFrame對象均屬于所述低級域。為了更好地理解圖3所述的初始登錄和準(zhǔn)備階段,圖4示出了圖3的初始登錄和準(zhǔn)備階段完成之后的頁面示意圖。如圖4所示,框410表示初始的瀏覽器頁面,其所屬的域是cc.bb.aa.com,在其中創(chuàng)建了第一iFrame對象420和第二iFrame對象430。術(shù)語"iFrame"也可以被稱作嵌入式元素或者嵌入式框架,它可以把一個(gè)網(wǎng)頁的框架和內(nèi)容嵌入到現(xiàn)有的HTML網(wǎng)頁中,作為現(xiàn)有HTML網(wǎng)頁的一個(gè)子窗口。iFrame可以嵌入到HTML網(wǎng)頁中的任意部分。它的一大特征是,iFrame所引用的HTML文件不是與該iFrame所嵌入的HTMLii文件相互獨(dú)立顯示,而是可以直接嵌入在后一HTML文件中。但是這兩個(gè)HTML文件是相互獨(dú)立的,二者都被看成是完整的文件,而不是將其中一個(gè)看成另一個(gè)的一部分。另夕卜,iFrame還可以多次在不同頁面內(nèi)顯示同一內(nèi)容,而不必重寫該內(nèi)容。通過iFrame對象所在頁面的對f^莫型,可以訪問iFrame對象的屬性,但不能訪問其內(nèi)容,從而確保了安全性。所創(chuàng)建的iFrame可以被用于使能Web網(wǎng)頁的跨域交互。iFrame的大小是可以調(diào)整的,因此,iFrame可以是不可見的,以至于用戶甚至不會在UI中看到它。在框320,由第一iFrame對象420創(chuàng)建一個(gè)JavaScript對象O440。此對象O440用于在其中創(chuàng)建用于提交訪問第三方服務(wù)器的內(nèi)容的請求以及凈化該內(nèi)容的功能。這些功能的具體工作方式將在下文中說明。在框325,使得第二iFrame對象430與第一iFrame對象420共享所創(chuàng)建的對象0440。此時(shí)兩個(gè)iFrame對象均可以訪問該共享對象0440,并且該對象O440具有與其所在頁相同的安全許可。在框330,提升第二iFrame對象430所屬的域。例如,將第二iFrame對象430所屬的域提升為相對于初始的低級域的一個(gè)上級域,例如bb.aa.com。根據(jù)安全屬性的規(guī)范,對于iFrame對象所屬的域進(jìn)行提升只能使其提升為上級域。因此,在可替換實(shí)施例中,該低級域也可以被提升至aa.com。該上級域可以被看成是一個(gè)虛擬域,即,在該上級域中,不包含任何有用數(shù)據(jù)(敏感數(shù)據(jù))。而對于該上級域的有效訪問的范圍僅限于該第二iFrame對象430。這樣,可以將第二iFrame對象430所在的域獨(dú)立出來,從而可以作為中介用于接收并處理來自第三方服務(wù)器的內(nèi)容,并且如果在第三方內(nèi)容中存在潛在的惡意代碼,該惡意代碼僅可以在該上級域中起作用,而無法訪問初始的低級域,從而位于低級域中的敏感信息不會被竊取,并且低級域中不會被植入惡意代碼。在框335,由第一iFrame對象420在共享對象O440中創(chuàng)建一個(gè)凈化功能450,例如functionsanitization0,用于凈化來自第三方服務(wù)器的內(nèi)容。在框340,由第二iFrame對象430在共享對象O440中創(chuàng)建一個(gè)源訪問功能460,例如functioncreatesrc(),用于向笫三方服務(wù)器提交訪問其上的內(nèi)容的請求。由于這兩個(gè)功能都在對象0440中創(chuàng)建,因此它們均繼承了該對象O440所在頁的安全許可。由于第一和第二iFrame對象共享所i^Xt象O440,因此第一iFrame對象420和第二iFrame對象430均可以訪問對象O440中的源訪問功能和凈化功能。而由于同源限制的原因,源訪問功能460不能反向訪問第一iFrame對象420,以及凈化功能450不能反向訪問第二iFrame對象430。框335和框340可以被先后執(zhí)行,或者同時(shí)執(zhí)行。接著所述初始登錄和準(zhǔn)備階段完成,并在框345返回?,F(xiàn)在返回圖2,在框205的初始登錄和準(zhǔn)備階段完成之后,客戶端可以安全地請求并處理第三方服務(wù)器的內(nèi)容。為了更好地理解圖2所述的方法,圖5示出了在圖4的頁面示意圖中執(zhí)行跨域交互的具體實(shí)現(xiàn)方式。首先在框210,由第一iFrame對象420訪問在共享對象O440中創(chuàng)建的源訪問功能460,并將用于訪問第三方服務(wù)器120的內(nèi)容的請求傳送到源訪問功能460(如圖5中箭頭a所示)。在框215,源訪問功能460向第三方服務(wù)器120提交用于訪問其上的內(nèi)容的請求(如圖5中箭頭b所示)。在框220,第三方月良務(wù)器120響應(yīng)于該請求,將所需內(nèi)容作為響應(yīng)以JSON格式發(fā)送到第二iFrame對象430(如圖5中箭頭c所示)。如前所述,由于第二iFrame對象430屬于已提升的分離域(例如bb.aa.com),并且其中沒有包含任何敏感信息,因此,即使在來自第三方服務(wù)器120的響應(yīng)中含有任何惡意代碼,它們也無法訪問其它域(例如低級域cc.bb.aa.com),從而無法獲取處于其它域的敏感信息,也無法在其它域中植入惡意代碼。由此,如上文圖1的響應(yīng)140中示出的兩種惡意攻擊方式(嵌入惡意腳本代碼、重新定義同名新功能來覆蓋原有回叫功能)均無法起作用。在框225,由第二iFrame對象430將從第三方服務(wù)器120所接收的響應(yīng)發(fā)送到在共享對象O440中創(chuàng)建的凈化功能450(如圖5中箭頭d所示)。在框230,該凈化功能450可以遍歷整個(gè)響應(yīng),以l更過濾其中的潛在惡意代碼。例如,該凈化功能450可以訪問預(yù)先存儲的惡意代碼列表,并將響200810212617.4應(yīng)內(nèi)容中可能嵌入的相應(yīng)的惡意代碼刪除。應(yīng)該了解,本領(lǐng)域技術(shù)人員已知的任意其它信息過濾方式都是可能的,它們均落入本發(fā)明的范圍之中。之后在框235,由凈化功能450將過濾后的響應(yīng)發(fā)送到第一iFrame對象420(如圖5中箭頭e所示)。由于凈化功能450是由第一iFrame對象420創(chuàng)建的,因此其可以與第一iFrame對象420進(jìn)行通信。在經(jīng)it^響應(yīng)內(nèi)容的凈化之后,第一iFrame對象420就可以自由地使用來自第三方服務(wù)器120的內(nèi)容,而不用繼續(xù)考慮安全性的問題。所述方法在框240結(jié)束。如上所述,才艮據(jù)本發(fā)明的方法,避免了大范圍重寫后臺代碼,從而,在保持了系統(tǒng)對于Web應(yīng)用的跨域交互的功能性需求的同時(shí),還增強(qiáng)了對于系統(tǒng)的脆弱性防護(hù),并可以提供透明的運(yùn)行時(shí)安全防護(hù)以及即時(shí)防護(hù),而不用改變后端應(yīng)用邏輯。在此需要注意,盡管在本發(fā)明的上下文中采用了僅執(zhí)行一次域提升的方案,實(shí)際上,本領(lǐng)域技術(shù)人員可以容易地想到,為了進(jìn)一步提高安全性,可以執(zhí)行不止一次的域提升,例如,創(chuàng)建三個(gè)iFrame對象,其中第一iFrame對象所屬的初始域是cc.bb.aa.com,第二iFrame對象所屬的域被提升為bb.aa.com,而第三iFrame對象所屬的域被提升為aa.com,其余步驟與上述的步驟相類似,在此不再重復(fù)描述。經(jīng)過這種多次域提升,本發(fā)明的方案將具有更高的安全性。以上是對于根據(jù)本發(fā)明一個(gè)實(shí)施例的一種為Web應(yīng)用提供針對跨域交互的運(yùn)行時(shí)脆弱性防護(hù)的方法的詳細(xì)描述,在同一發(fā)明構(gòu)思下,還參考圖6提出了根據(jù)本發(fā)明一個(gè)實(shí)施例的一種為Web應(yīng)用提供針對跨域交互的運(yùn)4亍時(shí)脆弱性防護(hù)的系統(tǒng)600。在所述系統(tǒng)600中,Web應(yīng)用需要進(jìn)行跨域交互。如圖6所示,所述系統(tǒng)600可以包括iFrame控制裝置610、對象控制裝置670。具體而言,在所述系統(tǒng)600中,所述iFrame控制裝置610可以包括iFrame創(chuàng)建裝置615、對象共享裝置620、域提升裝置625、功能創(chuàng)建裝置630、以及iFrame交互裝置635。所述iFrame創(chuàng)建裝置615用于在網(wǎng)頁中創(chuàng)建第一iFrame對象650和第二iFrame對象655,其中所述兩個(gè)iFrame對象屬于所在網(wǎng)頁的低級域,該4氐級域是用于實(shí)際獲取并向用戶呈現(xiàn)第三方服務(wù)器的內(nèi)容的域。對象共享裝置620用于創(chuàng)建一個(gè)對象O660,并使得該對象可以由第二iFrame對象655共享。所述域提升裝置625用于將所述第二iFrame對象655所在的低級域提升為上級域。其中所述上級域是虛擬域,該虛擬域中不包^K壬何有用數(shù)據(jù)。所述功能創(chuàng)建裝置630用于由所述第一iFrame對象650在所述共享對象O670中創(chuàng)建一個(gè)源訪問功能,所述源訪問功能用于向第三方服務(wù)器提交訪問其上的內(nèi)容的請求。所述功能創(chuàng)建裝置630還用于由所述第二iFrame對象655在所述共享對象O660中創(chuàng)建一個(gè)凈化功能,所述凈化功能用于對由所述第二iFrame對象655從第三方服務(wù)器接收的響應(yīng)進(jìn)行凈化。所述iFrame交互裝置635用于控制所述第一iFrame對象650和第二iFrame對象655與共享對象O660中的源訪問功能和凈化功能、以及第三方服務(wù)器進(jìn)行的交互。所述交互可以包括由所述第一iFrame對象650將用于訪問第三方服務(wù)器的內(nèi)容的請求傳送到所迷對象O660中的源訪問功能;由所述第二iFrame對象655從第三方服務(wù)器接收所需內(nèi)容;由所述第二iFrame對象655將所接收的內(nèi)容發(fā)送到所述對象O660中的凈化功能;以及由所述第一iFrame對象650從所述對象O660中的凈化功能接收過濾后的所述內(nèi)容。在所述系統(tǒng)600中,對象控制裝置670可以包括功能交互裝置675、功能控制裝置680。所述功能交互裝置675用于控制共享對象O660中的源訪問功能和凈化功能與所述第一iFrame對象650和第二iFrame對象655、以及第三方服務(wù)器進(jìn)行的交互。所述交互可以包括由所述源訪問功能從所述第一iFrame對象650接收用于訪問第三方服務(wù)器的內(nèi)容的請求,并將該請求提交到第三方服務(wù)器;由所述凈化功能從所述第二iFrame對象655接收來自第三方服務(wù)器的內(nèi)容,并將過濾后的內(nèi)容發(fā)送到所述第一iFrame對象650。所述功能控制裝置680用于控制在所述共享對象O660中創(chuàng)建的功能的操作。所述操作可以包括由所述凈化功能過濾從所述第二iFrame對象655接收的第三方服務(wù)器的內(nèi)容。所述系統(tǒng)600的操作可以通過在由Web應(yīng)用從托管服務(wù)器接收的初始響應(yīng)中插入JavaScript邏輯來激活。此外,所述系統(tǒng)600可以4皮實(shí)現(xiàn)為Web應(yīng)用防火墻,或者被實(shí)現(xiàn)為客戶端插件或者服務(wù)器端的代理。以上詳細(xì)描述了根據(jù)本發(fā)明一個(gè)實(shí)施例的一種用于為Web應(yīng)用提供針對跨域交互的運(yùn)行時(shí)脆弱性防護(hù)的方法和系統(tǒng)。如本領(lǐng)域普通技術(shù)人員可以了解的,本發(fā)明可以體現(xiàn)為方法、系統(tǒng)和/或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明可以呈現(xiàn)為完全硬件實(shí)施形式、完全軟件實(shí)施形式或者軟件和硬件組合實(shí)施形式。此外,本發(fā)明可以被呈現(xiàn)為在機(jī)器可讀媒體上包括的計(jì)算機(jī)程序產(chǎn)品,機(jī)器可讀媒體上存儲了用于對計(jì)算機(jī)系統(tǒng)進(jìn)行編程以執(zhí)行根據(jù)本發(fā)明的過程的機(jī)器可執(zhí)行程序指令。這里所使用的術(shù)語1幾器可讀媒體"包括向計(jì)算機(jī)系統(tǒng)提供用于執(zhí)行的指令的任意媒體。這種媒體可以采用多種形式,包括但是不局限于非易失性媒體、易失性媒體和傳B體。非易失性媒體的常見形式例如包括軟盤、軟磁盤、硬盤、磁帶或者任何其它磁媒體、光盤ROM(CD-ROM)或者任何其它光+某體、打孔卡或者任何其它帶有孔圖案的物理媒體、可編程ROM(PROM)、可擦寫PROM(EPROM)、電EPROM(EEPROM)、閃速存儲器、任何其它存儲芯片或者盒式磁帶(cartridge)、或者計(jì)算機(jī)系統(tǒng)可以讀取并適合存儲指令的任何其它媒體。適于存儲和/或執(zhí)行程序代碼的數(shù)據(jù)處理系統(tǒng)將包括直接地或通過系統(tǒng)總線間接地耦合于存儲器單元的至少一個(gè)處理器。存儲器單元可以包括在程序代碼的實(shí)際執(zhí)行期間使用的局部存儲器、海量存儲裝置、以及高速緩沖存儲器,該高速緩沖存儲器提供了至少某種程序代碼的臨時(shí)存儲以便減少在執(zhí)行期間必須從海量存儲裝置檢索代碼的次數(shù)。此外,可以理解,方框圖和/或流程圖中的每個(gè)方框以及方框圖和流程圖中的一些方框的組合可以用一些計(jì)算機(jī)程序指令實(shí)現(xiàn)。這些計(jì)算機(jī)程序指令可以提供給一通用計(jì)算機(jī)、專用計(jì)算機(jī)或其它可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一機(jī)器,使得這些指令通過計(jì)算機(jī)或其它可編程數(shù)據(jù)處理設(shè)備的處理器的執(zhí)行創(chuàng)建用于實(shí)現(xiàn)在方框圖和/或流程圖內(nèi)或者方框內(nèi)所指定的功能的裝置。盡管已經(jīng)參考優(yōu)選實(shí)施例具體地示出并描述了本發(fā)明,但其不是為了以公開的形式窮舉或限制本發(fā)明。對于本領(lǐng)域的普通技術(shù)人員,可以在形式上和細(xì)節(jié)上進(jìn)行各種改變而不會背離本發(fā)明的精神和范圍。選擇并描述了實(shí)施例是為了最好地解釋本發(fā)明的原理和實(shí)際的應(yīng)用,以及為了使本領(lǐng)域的其它普通技術(shù)人員能夠理解對于各種實(shí)施例的本發(fā)明,所述實(shí)施例具有適合于預(yù)期的具體使用的各種修改。權(quán)利要求1.一種用于為Web應(yīng)用提供針對跨域交互的運(yùn)行時(shí)脆弱性防護(hù)的方法,所述方法包括由Web應(yīng)用創(chuàng)建第一iFrame對象和第二iFrame對象,其中所述第一和第二iFrame對象同屬于Web應(yīng)用所在的低級域;由所述第一iFrame對象創(chuàng)建一個(gè)對象,并使所述第二iFrame共享所述所創(chuàng)建的對象;將所述第二iFrame對象所屬的域提升為上級域;在所述共享對象中,由所述第二iFrame對象創(chuàng)建一個(gè)源訪問功能,用于向第三方服務(wù)器提交訪問其上的內(nèi)容的請求;以及在所述共享對象中,由所述第一iFrame對象創(chuàng)建一個(gè)凈化功能,用于對由所述第二iFrame對象從第三方服務(wù)器接收的響應(yīng)進(jìn)行凈化。2.根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括由所述第一iFrame對象將用于訪問第三方服務(wù)器的內(nèi)容的請求傳送到所述源訪問功能;由所述源訪問功能向第三方服務(wù)器提交所述請求;由所述第二iFrame對象從第三方服務(wù)器接收所需內(nèi)容;由所述凈化功能從所述第二iFrame對象接收所述內(nèi)容并過濾其中的潛在惡意代碼;以及由所述第一iFrame對象從所述凈化功能接收過濾后的所述內(nèi)容。3.根據(jù)權(quán)利要求1所述的方法,其中所述方法通過由Web應(yīng)用接收的JavaScript邏輯來激活。4.根據(jù)權(quán)利要求1所述的方法,其中所述方法由Web應(yīng)用防火墻來實(shí)現(xiàn)。5.根據(jù)權(quán)利要求l所述的方法,其中所迷方法由客戶端插件或者由服務(wù)器端的代理來實(shí)現(xiàn)。6.根據(jù)權(quán)利要求l所述的方法,其中所述低級域是用于實(shí)際獲取并向用戶呈現(xiàn)第三方服務(wù)器的內(nèi)容的域。7.根據(jù)權(quán)利要求l所述的方法,其中所述上級域是虛擬域,該虛擬域中不包含任何有用數(shù)據(jù)。8.—種用于為Web應(yīng)用提供針對跨域交互的運(yùn)行時(shí)脆弱性防護(hù)的系統(tǒng),所述系統(tǒng)包括用于由Web應(yīng)用創(chuàng)建第一iFrame對象和第二iFrame對象的裝置,其中所述第一和第二iFrame對象同屬于Web應(yīng)用所在的低級域;用于由所述第一iFrame對象創(chuàng)建一個(gè)對象,并^f吏所述第二iFrame共享所述所創(chuàng)建的對象的裝置;用于將所述第二iFrame所屬的域提升為上級域的裝置;用于在所述共享對象中,由所述第二iFrame對象創(chuàng)建一個(gè)源訪問功能的裝置,所述源訪問功能用于向第三方服務(wù)器提交訪問其上的內(nèi)容的請求;以及用于在所述共享對象中,由所述第一iFrame對象創(chuàng)建一個(gè)凈化功能的裝置,所述凈化功能用于對由所述第二iFrame對象從第三方服務(wù)器接收的響應(yīng)進(jìn)行凈化。9.根據(jù)權(quán)利要求8所述的系統(tǒng),進(jìn)一步包括用于由所述第一iFrame對象將用于訪問第三方服務(wù)器的內(nèi)容的請求傳送到所述源訪問功能的裝置;用于由所述源訪問功能向第三方服務(wù)器提交所述請求的裝置;用于由所述第二iFrame對象從第三方服務(wù)器接收所需內(nèi)容的裝置;用于由所述凈化功能從所述第二iFrame對象接收所述內(nèi)容并過濾其中的潛在惡意代碼的裝置;以及用于由所述第一iFrame對象從所述凈化功能接收過濾后的所述內(nèi)容的裝置。10.根據(jù)權(quán)利要求8所述的系統(tǒng),其中所述系統(tǒng)的操作通過由Web應(yīng)用接收的JavaScript邏輯來激活。11.根據(jù)權(quán)利要求8所述的系統(tǒng),其中所述系統(tǒng)被實(shí)現(xiàn)為Web應(yīng)用防12.根據(jù)權(quán)利要求8所述的系統(tǒng),其中所述系統(tǒng)被實(shí)現(xiàn)為客戶端插件或者服務(wù)器端的代理。13.根據(jù)權(quán)利要求8所述的系統(tǒng),其中所述低級域是用于實(shí)際獲取并向用戶呈現(xiàn)第三方服務(wù)器的內(nèi)容的域。14.根據(jù)權(quán)利要求8所述的系統(tǒng),其中所述上級域是虛擬域,該虛擬域中不包含任何有用數(shù)據(jù)。全文摘要提供了一種用于為Web應(yīng)用提供針對跨域交互的運(yùn)行時(shí)脆弱性防護(hù)的方法和系統(tǒng)。所述方法包括由Web應(yīng)用創(chuàng)建第一iFrame對象和第二iFrame對象,其中所述第一和第二iFrame對象同屬于Web應(yīng)用所在的低級域;由所述第一iFrame對象創(chuàng)建一個(gè)對象,并使所述第二iFrame共享所述所創(chuàng)建的對象;將所述第二iFrame對象所屬的域提升為上級域;在所述共享對象中,由所述第二iFrame對象創(chuàng)建一個(gè)源訪問功能,用于向第三方服務(wù)器提交訪問其上的內(nèi)容的請求;以及在所述共享對象中,由所述第一iFrame對象創(chuàng)建一個(gè)凈化功能,用于對由所述第二iFrame對象從第三方服務(wù)器接收的響應(yīng)進(jìn)行凈化。文檔編號H04L29/06GK101662462SQ20081021261公開日2010年3月3日申請日期2008年8月25日優(yōu)先權(quán)日2008年8月25日發(fā)明者煜張,曄王,琳羅,郝大明申請人:國際商業(yè)機(jī)器公司