專利名稱::跟蹤數(shù)據(jù)的來(lái)源并控制數(shù)據(jù)傳輸?shù)闹谱鞣椒?br>技術(shù)領(lǐng)域:
:本發(fā)明涉及用于對(duì)可編輯腳本的(scriptable)客戶端(如Web瀏覽器)跟蹤數(shù)據(jù)的來(lái)源并控制敏感數(shù)據(jù)的傳輸?shù)姆椒ā?shù)據(jù)處理裝置和計(jì)算機(jī)程序。
背景技術(shù):
:Web瀏覽器是在用戶的數(shù)據(jù)處理裝置上運(yùn)行并提供對(duì)萬(wàn)維網(wǎng)上的信息的訪問(使用超文本傳輸協(xié)議(HTTP)提交請(qǐng)求到Web服務(wù)器計(jì)算機(jī)以檢索網(wǎng)頁(yè)并瀏覽網(wǎng)頁(yè)內(nèi)容或與網(wǎng)頁(yè)內(nèi)容交互)的計(jì)算機(jī)程序。一些Web瀏覽器和類似的HTTP客戶端可解釋腳本語(yǔ)言。典型地,使用JavaScript,盡管一些Web瀏覽器理解VBScript(VisualBasic腳本編輯),并且該機(jī)制可擴(kuò)展到其他語(yǔ)言。通過將腳本語(yǔ)言指令包括在頁(yè)面的文本中,當(dāng)用有適當(dāng)能力的瀏覽器觀看時(shí),作者可使得其展現(xiàn)任意復(fù)雜行為,以及或替代地,表現(xiàn)為靜態(tài)文檔。可直接包括這樣的指令,或通過參考分開的文件而包括,在所述分開的文件中包含了所述指令。網(wǎng)頁(yè)中的嵌入腳本指令通過瀏覽器內(nèi)的子系統(tǒng)或"腳本編輯引擎(scriptingengine)"解釋。該引擎自身以編程語(yǔ)言(典型地,如C++或Java的更結(jié)構(gòu)化的語(yǔ)言)編寫。該引擎能夠執(zhí)行多個(gè)操作;每個(gè)腳本語(yǔ)言指令字面上是用于引擎執(zhí)行其可用操作中的特定一個(gè)的指令。腳本編輯引擎還訪問表示瀏覽器內(nèi)的網(wǎng)頁(yè)自身的數(shù)據(jù)結(jié)構(gòu)。某些可由該引擎執(zhí)行的操作涉及從這些數(shù)據(jù)結(jié)構(gòu)讀取或?qū)懭脒@些數(shù)據(jù)結(jié)構(gòu),當(dāng)在瀏覽器內(nèi)觀看時(shí)有效地編輯該頁(yè)面??稍谀_本操作中使用的其他數(shù)據(jù)源包括可用初始值設(shè)置或從任何其他源填充的腳本變量、以及使用已知為"XMLHttpRequest"的技術(shù)分開下載的其他數(shù)據(jù)。與在腳本編輯引擎內(nèi)嚴(yán)格地操作信息并與網(wǎng)頁(yè)的內(nèi)部表現(xiàn)交換信息一樣,存在使得瀏覽器經(jīng)由其網(wǎng)絡(luò)連接與其他系統(tǒng)交互、或執(zhí)行由人類用戶通常命令的其他動(dòng)作的一類腳本指令。典型地限制在該組中可用的指令的選擇,以便減少惡意腳本可能有的影響。重要的是,注意到因?yàn)槟_本作為網(wǎng)頁(yè)的一部分出現(xiàn),并且因?yàn)槟_本自身可能包含可能稍后插入到頁(yè)面中的信息,所以腳本自身是數(shù)據(jù)的形式,并且本發(fā)明中的"數(shù)據(jù)元素"的所有考慮將同等地適用于構(gòu)成腳本的指令列表。作為可如何使用上述設(shè)備(facility)的示例,考慮使用AJAX(異步JavaScript和XML)技術(shù)以網(wǎng)頁(yè)形式傳遞的基于Web的文檔編輯應(yīng)用。圖形Web瀏覽器最初下載攜帶各種顯示元素(如標(biāo)尺、按鈕和編輯文檔區(qū))并且還參照腳本指令的文件的頁(yè)面。這些指令在如何響應(yīng)用戶的動(dòng)作方面指引腳本編輯引擎。例如,如果用戶要激活"黑體"按鈕,則可指令腳本編輯引擎首先讀取頁(yè)面以便確定用戶已經(jīng)選擇了文本區(qū)中的哪些詞。該信息將由以將文本標(biāo)記為黑體的方式修改頁(yè)面數(shù)據(jù)結(jié)構(gòu)的另一指令使用。最終,稱為"呈現(xiàn)引擎"的瀏覽器的另一部分將讀取那些標(biāo)記,結(jié)果,將導(dǎo)致標(biāo)記的詞以黑體外觀出現(xiàn)在頁(yè)面上。如支持JavaScript的Web瀏覽器的可編輯腳本的HTTP客戶端傳統(tǒng)地一次加載僅僅來(lái)自一個(gè)源位置的數(shù)據(jù)。然而,期望在Web服務(wù)環(huán)境中,能夠?qū)?lái)自若干源位置的腳本和數(shù)據(jù)組合到一個(gè)腳本環(huán)境中。返回到基于Web的文檔編輯應(yīng)用的示例,用戶通常需要例如4通過將文檔上載到提供者的服務(wù)器,將他們的文檔暴露并委托給應(yīng)用的提供者。盡管大量應(yīng)用程序當(dāng)前正以Web服務(wù)的形式經(jīng)由萬(wàn)維網(wǎng)變得可用,所述Web服務(wù)開發(fā)在Web瀏覽器內(nèi)運(yùn)行的腳本并與Web服務(wù)器通信,但是許多組織和個(gè)人不愿意接受他們的機(jī)密文檔的固有暴露。這限制了可用應(yīng)用的使用。對(duì)于在客戶端內(nèi)以腳本編輯語(yǔ)言編寫的此類應(yīng)用,對(duì)從一個(gè)或多個(gè)不同位置獲得的數(shù)據(jù)運(yùn)行將是可能的。然而,一旦腳本和數(shù)據(jù)加載到腳本編輯環(huán)境中,當(dāng)前沒有適當(dāng)?shù)臋C(jī)制用于確保腳本不被惡意地或在提供如拼寫檢查的過程中將數(shù)據(jù)傳輸回到其自己的服務(wù)器。已知解決方案涉及阻止未授權(quán)的腳本訪問某些文件和對(duì)象,但是這可能是過分限制性的。例如,美國(guó)專利No.6,986,062描述了基于腳本的來(lái)源和定義的許可控制腳本訪問對(duì)象的能力。客戶端的訪問控制數(shù)據(jù)結(jié)構(gòu)中的條目包括與對(duì)象相關(guān)聯(lián)的源標(biāo)識(shí)符字段和許可標(biāo)識(shí)符字段_腳本的源被記錄并隨后檢查,并且阻止未授權(quán)的腳本訪問某些對(duì)象。美國(guó)專利No.6,505,300描述了對(duì)于如腳本的不受信任的內(nèi)容限制執(zhí)行文本。當(dāng)進(jìn)程嘗試訪問資源時(shí),與該進(jìn)程相關(guān)聯(lián)的令牌與資源的安全性信息進(jìn)行比較,以確定是否允許該訪問。腳本的源可確定如何信任它并且可對(duì)特定資源執(zhí)行什么進(jìn)程。美國(guó)專利申請(qǐng)No.2006/0230452公開了從外部位置獲得文件并添加關(guān)于獲得的文件的來(lái)源的標(biāo)簽信息。獲得的文件的來(lái)源可用于隨后的安全性策略判斷,如允許還是阻止內(nèi)容的執(zhí)行或呈現(xiàn)。
發(fā)明內(nèi)容本發(fā)明的第一方面提供一種在腳本編輯環(huán)境內(nèi)執(zhí)行的、控制敏感數(shù)據(jù)的傳輸?shù)姆椒?,所述放包括以下步驟將來(lái)源的指示與第一數(shù)據(jù)元素相關(guān)聯(lián);將來(lái)源的指示傳播到從第一數(shù)據(jù)元素生成的數(shù)據(jù)元素;以及限制第一數(shù)據(jù)元素和所述生成的數(shù)據(jù)元素僅傳輸?shù)皆S可的目的地,其中參照來(lái)源的指示標(biāo)識(shí)所述許可的目的地。第一數(shù)據(jù)元素可包括一組數(shù)據(jù)元素的一部分,并且潛在地非常大的一組數(shù)據(jù),來(lái)源的指示與該數(shù)據(jù)關(guān)聯(lián)。生成的數(shù)據(jù)元素還可以是一組生成的數(shù)據(jù)元素之一。在本發(fā)明的一個(gè)實(shí)施例中,阻止第一數(shù)據(jù)元素和從第一數(shù)據(jù)元素生成的任何數(shù)據(jù)元素傳輸?shù)降谝粩?shù)據(jù)元素的來(lái)源以外的任何來(lái)源。這可以阻止腳本編輯操作將敏感數(shù)據(jù)跨越網(wǎng)絡(luò)傳輸?shù)綌?shù)據(jù)源以外的任何網(wǎng)絡(luò)節(jié)點(diǎn),同時(shí)允許腳本在限制數(shù)據(jù)傳輸?shù)囊?guī)則的約束內(nèi)合作。在一個(gè)實(shí)施例中,如果在腳本編輯環(huán)境內(nèi)從每個(gè)具有關(guān)聯(lián)的來(lái)源指示的多個(gè)數(shù)據(jù)元素生成新數(shù)據(jù)元素,則新數(shù)據(jù)元素將具有從多個(gè)數(shù)據(jù)元素得到的來(lái)源的關(guān)聯(lián)指示。如果多個(gè)敏感輸入數(shù)據(jù)元素具有不同來(lái)源,則限制傳輸?shù)牟襟E可阻止輸出數(shù)據(jù)傳輸?shù)饺魏文康牡兀欢鴱木哂泄餐瑏?lái)源的多個(gè)輸入數(shù)據(jù)元素得到的輸出可傳輸回到共同的來(lái)源,同時(shí)阻止其傳輸?shù)饺魏纹渌康牡亍T谶\(yùn)行"不受信任的"腳本的腳本編輯環(huán)境內(nèi),限制傳輸?shù)牟襟E是有利的。在該上下文中的"不受信任的"腳本是對(duì)其沒有驗(yàn)證腳本或其提供者的安全性控制或信任度的任何腳本(因此,術(shù)語(yǔ)"不受信任的"不暗示腳本或其提供者已經(jīng)被識(shí)別為具有任何惡意)。當(dāng)數(shù)據(jù)由腳本操作時(shí),本發(fā)明提供了對(duì)敏感數(shù)據(jù)的保護(hù),確保腳本不將該數(shù)據(jù)發(fā)送到還沒有信息的任何服務(wù)器,而不需要驗(yàn)證腳本或其提供者的信任度。關(guān)聯(lián)和傳播來(lái)源的指示的步驟可由Web瀏覽器內(nèi)的腳本編輯引擎實(shí)現(xiàn),其對(duì)數(shù)據(jù)內(nèi)的安全性標(biāo)簽響應(yīng)以阻止任何腳本將標(biāo)記的數(shù)據(jù)發(fā)送到數(shù)據(jù)的源位置以外的位置。根據(jù)一個(gè)實(shí)施例的"腳本編輯引擎"包括腳本解釋器、標(biāo)簽生成器和標(biāo)簽傳播器。本發(fā)明的第二方面提供一種數(shù)據(jù)處理系統(tǒng),包括至少一個(gè)數(shù)據(jù)處理單元;至少一個(gè)數(shù)據(jù)存儲(chǔ)單元;腳本解釋器;用于將來(lái)源的指示與第一數(shù)據(jù)元素相關(guān)聯(lián)的部件;用于將來(lái)源的指示傳播到從第一數(shù)據(jù)元素生成的新數(shù)據(jù)元素的部件;以及用于限制將第一數(shù)據(jù)元素和所述生成的數(shù)據(jù)元素從數(shù)據(jù)處理系統(tǒng)僅傳輸?shù)皆S可的目的地的部件,其中參考來(lái)源的指示標(biāo)識(shí)所述許可的目的地。在該第二方面的一個(gè)實(shí)施例中,腳本解釋器、用于關(guān)聯(lián)的部件、用于傳播的部件和用于限制傳輸?shù)牟考吭谌鏦eb瀏覽器的可編輯腳本的HTTP客戶端計(jì)算機(jī)程序內(nèi)實(shí)現(xiàn)。在一個(gè)實(shí)施例中,用于關(guān)聯(lián)的部件和用于傳播的部件提供為HTTP客戶端程序內(nèi)的改進(jìn)的腳本編輯引擎的特征,可使得該腳本編輯引擎可用作記錄介質(zhì)上的包括計(jì)算機(jī)可讀程序代碼的程序產(chǎn)品。下面參照附圖通過示例的方式更詳細(xì)地描述本發(fā)明實(shí)施例,附圖中圖1是其中可實(shí)現(xiàn)本發(fā)明的網(wǎng)絡(luò)的示意表示;圖2示出其中可實(shí)現(xiàn)本發(fā)明的示例客戶端數(shù)據(jù)處理系統(tǒng);圖3示出根據(jù)本發(fā)明實(shí)施例的腳本編輯(scripting)引擎的組件;圖4示出根據(jù)本發(fā)明實(shí)施例、在客戶端和服務(wù)器之間的交互操作的序列,在本發(fā)明實(shí)施例中,生成和存儲(chǔ)來(lái)源標(biāo)簽,此后將其傳播到新的數(shù)據(jù)元素然后用于阻止敏感數(shù)據(jù)傳輸?shù)綌?shù)據(jù)來(lái)源以外的目的地;以及圖5示出根據(jù)本發(fā)明實(shí)施例的傳播注釋(annotation)的操作的序列。具體實(shí)施例方式1.網(wǎng)絡(luò)環(huán)境和示例客戶端系統(tǒng)圖1示意性示出的分布式數(shù)據(jù)處理網(wǎng)絡(luò)包括任何數(shù)量的客戶端數(shù)據(jù)處理系統(tǒng)10、20、30以及經(jīng)由HTTP相互通信的服務(wù)器數(shù)據(jù)處理系統(tǒng)40、50和60。盡管本發(fā)明無(wú)論在系統(tǒng)硬件方面還是操作系統(tǒng)環(huán)境方面都不限于特定類型的數(shù)據(jù)處理系統(tǒng),但是如圖2示意性示出的典型的客戶端系統(tǒng)IO可以是包括至少一個(gè)數(shù)據(jù)處理單元100、至少一個(gè)數(shù)據(jù)存儲(chǔ)單元、內(nèi)部通信單元130、輸入/輸出組件和網(wǎng)絡(luò)接口190的膝上型或桌面型數(shù)據(jù)處理系統(tǒng),所述至少一個(gè)數(shù)據(jù)存儲(chǔ)單元典型地包括易失性系統(tǒng)存儲(chǔ)器110和如盤存儲(chǔ)的非易失性存儲(chǔ)組件120,所述輸入/輸出組件包括設(shè)備驅(qū)動(dòng)器140和用于鼠標(biāo)160、鍵盤170和監(jiān)視器180的連接接口150。在本發(fā)明的實(shí)現(xiàn)中使用的典型客戶端系統(tǒng)具有其上安裝的多個(gè)程序代碼組件,包括操作系統(tǒng)軟件200、Web瀏覽器210和多個(gè)應(yīng)用程序220、230。Web瀏覽器210適于使用請(qǐng)求響應(yīng)HTTP模型經(jīng)由網(wǎng)絡(luò)通信與遠(yuǎn)程Web服務(wù)器交互。Web服務(wù)器40、50和60的每個(gè)可包括一個(gè)或多個(gè)HTTP服務(wù)器70和一個(gè)或多個(gè)應(yīng)用服務(wù)器80、90,其在單服務(wù)器數(shù)據(jù)處理系統(tǒng)上或協(xié)作以提供高可用性和吞吐量的服務(wù)器機(jī)群上運(yùn)行,但是本發(fā)明不要求任何特定Web服務(wù)器架構(gòu)。在用于本發(fā)明的客戶端系統(tǒng)中,Web瀏覽器210包括使得能夠在下載的網(wǎng)頁(yè)內(nèi)執(zhí)行腳本的腳本解釋器,其包括腳本編輯引擎240的大部分組件。下面在本發(fā)明實(shí)施例的上下文中,參照?qǐng)D3到6描述本發(fā)明的各種組件和特征,其中若干組件實(shí)現(xiàn)為新穎的腳本編輯引擎的程序代碼組件。如圖3所示,腳本編輯引擎240包括腳本解釋器250、來(lái)源標(biāo)簽生成器260和標(biāo)簽傳播器270。本領(lǐng)域技術(shù)人員將理解,如下述用于阻止傳輸?shù)牟考谋景l(fā)明的各種組件可同等地實(shí)現(xiàn)為硬件組件,如專用集成電路(ASIC)。如下所述,生成和傳播的標(biāo)簽由Web瀏覽器或其他HTTP客戶端用來(lái)控制敏感數(shù)據(jù)元素的傳輸。2.指示來(lái)源的標(biāo)簽的生成和存儲(chǔ)如上所述,存在多種可在腳本編輯引擎操作中使用的數(shù)據(jù)元素。所有這些元素存儲(chǔ)在與腳本編輯引擎240自身相關(guān)聯(lián)或與Web瀏覽器210相關(guān)聯(lián)(或,在其他實(shí)現(xiàn)中,與其腳本編輯引擎是一部分的另一程序相關(guān)聯(lián))的數(shù)據(jù)結(jié)構(gòu)中。盡管腳本編輯操作將讀取和修改這些數(shù)據(jù)結(jié)構(gòu)內(nèi)的數(shù)據(jù)作為其內(nèi)部工作的一部分,但是不存在這樣的腳本編輯操作,通過其腳本可為其自己的目的檢查或改變數(shù)據(jù)結(jié)構(gòu)自身。在現(xiàn)有腳本編輯引擎中,這些數(shù)據(jù)結(jié)構(gòu)典型地包含數(shù)據(jù)元素的當(dāng)前值和用于腳本編輯引擎使用的一些額外信息。這樣的信息的一個(gè)示例是關(guān)于自動(dòng)垃圾收集的信息。本發(fā)明涉及將來(lái)源的指示與數(shù)據(jù)元素相關(guān)聯(lián),并且對(duì)于實(shí)現(xiàn)本發(fā)明中涉及的數(shù)據(jù)元素的"注釋"可以以與對(duì)腳本編輯引擎使用而提供的其他信息相同的方式存儲(chǔ)在腳本編輯引擎的數(shù)據(jù)結(jié)構(gòu)中。這意味著僅需要對(duì)當(dāng)前的Web瀏覽器和其他可編輯腳本的HTTP客戶端程序進(jìn)行小的改變來(lái)實(shí)現(xiàn)本發(fā)明,并且確保對(duì)于腳本沒有機(jī)制可用于干擾其自身注釋。圖4示出對(duì)于一組數(shù)據(jù)元素的指示來(lái)源的標(biāo)簽或"注釋"的初始生成中涉及的一系列步驟。所有被認(rèn)為是敏感的數(shù)據(jù)在被首先用于腳本操作中之前,必須被分配來(lái)源標(biāo)簽。存在很多可將數(shù)據(jù)引入現(xiàn)代Web瀏覽器的方式,但是其大部分涉及HTTP協(xié)議(在W3C網(wǎng)絡(luò)工作組的請(qǐng)求評(píng)論2616"超文本傳輸協(xié)議-HTTP/1.l"中規(guī)定,1999年6月)。對(duì)于這樣的方法,適于實(shí)現(xiàn)本發(fā)明的Web瀏覽器或其他HTTP客戶端在請(qǐng)求中可使用特殊HTTP報(bào)頭,而在響應(yīng)中可使用另一特殊HTTP報(bào)頭。注意,HTTP規(guī)范允許使用額外報(bào)頭;不實(shí)現(xiàn)相關(guān)功能性的系統(tǒng)將忽略與其有關(guān)的報(bào)頭。因此,如圖4所示,根據(jù)本發(fā)明實(shí)施例的客戶端_服務(wù)器交互序列以如Web瀏覽器的可編輯腳本的客戶端發(fā)送300HTTP請(qǐng)求到Web服務(wù)器而開始。盡管不是所有HTTP客戶端將實(shí)現(xiàn)本發(fā)明,但是實(shí)現(xiàn)本發(fā)明的客戶端將典型地(在伴隨數(shù)據(jù)的每個(gè)請(qǐng)求的許多報(bào)頭中)包括指示該事實(shí)的新的報(bào)頭。當(dāng)前可用的Web瀏覽器已經(jīng)發(fā)送大量關(guān)于其支持的功能性的信息、以及甚至其用戶需要的內(nèi)容的種類,如可接受哪種(人類)語(yǔ)言。例如,請(qǐng)求可能看起來(lái)像這樣GET/HTTP/1.1Host:ibm.comUser—Agent:Mozilla/5.0(Windows;U;WindowsNT5.1;en—US;rv:1.5)Accept:text/xml,鄰plication/xml,即plication/xhtml+xml,text/html;q=0.9,7text/plain:q=0.8,video/x_mng,image/png,image/jpeg,image/gif;q=0.2,一;q=0.1Acc印t-Langimge:en-us,en;q=0.5Accept-Encoding:gzip,deflateAcc印t-Charset:IS0-8859-l,utf_8;q=0.7,*;q=0.7Ke印-Alive:300Connection:ke印-alive可添加新的請(qǐng)求報(bào)頭以標(biāo)識(shí)請(qǐng)求者是否可提供用于"安全"內(nèi)容的保護(hù)。內(nèi)容類型"安全"與現(xiàn)有內(nèi)容類別不同(因?yàn)槠洳皇荕IME類型、人類語(yǔ)言、編碼類型或字符組)。在第一實(shí)施例中,新的請(qǐng)求者報(bào)頭具有字段名"接受_安全性",但是這僅是說明示例。無(wú)論字段名可以是什么,新報(bào)頭字段可以是對(duì)請(qǐng)求客戶端是否使用來(lái)源標(biāo)簽提供內(nèi)容保護(hù)的簡(jiǎn)單指示。請(qǐng)求報(bào)頭"接受_安全性來(lái)源標(biāo)簽"暗示如果服務(wù)器希望發(fā)送安全數(shù)據(jù),則瀏覽器可保護(hù)安全數(shù)據(jù),但是其不要求安全數(shù)據(jù)。額外報(bào)頭可包括在每個(gè)HTTP請(qǐng)求中,盡管這不是必要的。這樣的新報(bào)頭允許未來(lái)的與不同種類的可選實(shí)現(xiàn)的安全性的擴(kuò)展。例如,"接受-安全性"請(qǐng)求報(bào)頭和基于來(lái)源標(biāo)簽限制內(nèi)容的傳輸可與另一安全性選項(xiàng)一起實(shí)現(xiàn)。服務(wù)器訪問310準(zhǔn)備好下載到客戶端的請(qǐng)求頁(yè),但是Web服務(wù)器可配置為在傳輸任何敏感數(shù)據(jù)之前檢查新請(qǐng)求報(bào)頭的存在。當(dāng)對(duì)HTTP請(qǐng)求響應(yīng)時(shí),可對(duì)所有HTTP請(qǐng)求執(zhí)行檢查,或如果Web服務(wù)器提供有檢測(cè)數(shù)據(jù)敏感性的指示的機(jī)制時(shí),則可僅響應(yīng)于Web服務(wù)器標(biāo)識(shí)訪問頁(yè)內(nèi)的敏感數(shù)據(jù)而執(zhí)行檢查。在一個(gè)實(shí)施例中,可在內(nèi)容服務(wù)器上創(chuàng)建或存儲(chǔ)數(shù)據(jù)時(shí)插入數(shù)據(jù)敏感性的指示。對(duì)于本發(fā)明,關(guān)于在數(shù)據(jù)敏感性的檢查之前還是之后檢查客戶端能力的具體序列不是關(guān)鍵的。如果Web服務(wù)器標(biāo)識(shí)請(qǐng)求頁(yè)內(nèi)的敏感信息,并且Web服務(wù)器確定請(qǐng)求客戶端沒有承諾保護(hù)該數(shù)據(jù)(即,在請(qǐng)求中沒有包括新報(bào)頭),則根據(jù)本發(fā)明一個(gè)實(shí)施例的服務(wù)器通過拒絕該請(qǐng)求或通過提供沒有敏感數(shù)據(jù)的請(qǐng)求頁(yè)來(lái)答復(fù)320客戶端。Web服務(wù)器可編程和配置為以不同方式運(yùn)行(并且一些Web服務(wù)器可不實(shí)現(xiàn)支持本發(fā)明的任何新功能),但是在本發(fā)明中提供的新請(qǐng)求報(bào)頭使得服務(wù)器可能進(jìn)行關(guān)于是否提供敏感數(shù)據(jù)的通知的判斷。服務(wù)器然后可拒絕提供其敏感數(shù)據(jù)到?jīng)]有向各個(gè)服務(wù)器通知客戶端的能力和保護(hù)敏感數(shù)據(jù)的承諾的任何客戶端。注意,上述本發(fā)明實(shí)施例不包括任何這樣的機(jī)制,其中,當(dāng)聲稱保護(hù)敏感數(shù)據(jù)的HTTP客戶端實(shí)際上不保護(hù)敏感數(shù)據(jù)時(shí),阻止該HTTP客戶端。在該第一實(shí)施例中,將HTTP客戶端認(rèn)為是人類用戶的代理,并且本發(fā)明的范圍僅擴(kuò)展到用戶相信的數(shù)據(jù)。已知的用戶認(rèn)證解決方案應(yīng)當(dāng)用于確保僅授權(quán)的用戶可獲得敏感數(shù)據(jù)。如果Web服務(wù)器標(biāo)識(shí)請(qǐng)求頁(yè)中的敏感數(shù)據(jù)并且請(qǐng)求報(bào)頭中的字段的檢查確定請(qǐng)求客戶端提供對(duì)于敏感數(shù)據(jù)的保護(hù),則Web服務(wù)器傳輸330請(qǐng)求頁(yè)和"敏感數(shù)據(jù)"標(biāo)志到請(qǐng)求客戶端。盡管與本發(fā)明無(wú)關(guān),但是通常期望使用如安全套接字層的安全性機(jī)制來(lái)保護(hù)敏感數(shù)據(jù)的任何傳輸,以阻止其在運(yùn)送中的竊取。因此,在本實(shí)施例中,通過服務(wù)器提供其來(lái)執(zhí)行哪個(gè)數(shù)據(jù)是敏感的確定。根據(jù)本發(fā)明,當(dāng)響應(yīng)于HTTP請(qǐng)求提供330敏感數(shù)據(jù)時(shí),響應(yīng)將攜帶指示其內(nèi)容要被處理為敏感數(shù)據(jù)8的報(bào)頭。"敏感數(shù)據(jù)"報(bào)頭可包括來(lái)自Web服務(wù)器的、關(guān)于特定來(lái)源信息的顯式指令,以包括在來(lái)源標(biāo)簽中,并且該指令將僅通過來(lái)源標(biāo)簽生成器260起作用。如果接收340該數(shù)據(jù)的客戶端是可編輯腳本的,并且該數(shù)據(jù)要放置在對(duì)于腳本操作可訪問的存儲(chǔ)器的區(qū)域中,則當(dāng)保存數(shù)據(jù)時(shí)并且在執(zhí)行腳本之前,客戶端必須將源標(biāo)簽附到350數(shù)據(jù)。此后,來(lái)源標(biāo)簽從接收的數(shù)據(jù)元素傳播360到客戶端內(nèi)生成的任何新數(shù)據(jù)元素(如下所述),并且來(lái)源標(biāo)簽用于控制標(biāo)記數(shù)據(jù)元素的傳輸370(如下所述)。服務(wù)器可以確定在標(biāo)簽中要描述來(lái)源的精度。例如,小公司可能用使得瀏覽器將"company,com"的來(lái)源標(biāo)簽應(yīng)用到該數(shù)據(jù)的報(bào)頭為其內(nèi)聯(lián)網(wǎng)上的所有文檔服務(wù)。然后腳本可將該數(shù)據(jù)發(fā)送到公司內(nèi)的任何系統(tǒng),但是不發(fā)送到外部的任何地方。較大公司可能更嚴(yán)格地限制其某些數(shù)據(jù),可能用使得瀏覽器為其標(biāo)記"secretdocstore.r-and-d.company-corn"或"weba卯s.finance,company,com"的報(bào)頭。不能信任可能也駐留于此地其他應(yīng)用的共享服務(wù)器上的Web應(yīng)用可以服務(wù)數(shù)據(jù),使得其標(biāo)記域"a卯s.sharedhostingcompany.com"以及端口號(hào)"8080"和文件路徑"/customers/account42/secretdocs";這提供了基于在特定Web應(yīng)用的控制下專用的位置信息的來(lái)源的指示,而相同服務(wù)器上的其他位置可能較不精確地指定。因此,在Web應(yīng)用的專用控制下的位置可如下指定http://apps.sharedhostingcompany.com:8080/customers/account42secretdocs/上述標(biāo)記方案因此具有能夠處理共享服務(wù)器的情況的足夠的精度;而當(dāng)不處理共享服務(wù)器時(shí),主機(jī)名可能就足夠了。輸入到腳本對(duì)話框和頁(yè)面上的文本框中的信息、以及從本地文件加載的數(shù)據(jù)沒有可能對(duì)其委托敏感性問題的來(lái)源服務(wù)器。該問題可通過標(biāo)記從用戶獲得或以其他方式從計(jì)算機(jī)獲得或在計(jì)算機(jī)上生成的信息來(lái)處理,在該計(jì)算機(jī)上正運(yùn)行腳本編輯引擎,其中特殊來(lái)源標(biāo)簽意味著"本地"。該標(biāo)簽廣義上類似于其他來(lái)源標(biāo)簽,但是可以如下所述給出特殊處理。多數(shù)瀏覽器還可經(jīng)由HTTP以外的協(xié)議訪問數(shù)據(jù),其中文件傳輸協(xié)議(FTP)是廣泛使用的示例。在一些情況下,這些協(xié)議還可用如上對(duì)于HTTP所述的額外報(bào)頭擴(kuò)展;而在其他情況下,以與使用上述"本地"來(lái)源標(biāo)簽的本地文件(例如,在瀏覽器實(shí)現(xiàn)SMB或NFS共享文件系統(tǒng)協(xié)議時(shí))的相同方式處理數(shù)據(jù)是更適當(dāng)?shù)摹<词故O乱恍]有來(lái)源標(biāo)記系統(tǒng)的深?yuàn)W的協(xié)議,本發(fā)明仍然有用和有效,因?yàn)樗鼈儾豢赡苡糜趯谋景l(fā)明受益的Web應(yīng)用的種類。在本發(fā)明一個(gè)實(shí)施例中,增強(qiáng)用于生成和存儲(chǔ)注釋的上述技術(shù),以減少注釋傳播所需的存儲(chǔ)容量并允許其更快實(shí)現(xiàn)。在典型應(yīng)用中,在任何時(shí)間將僅存在少量注釋值(可能僅一個(gè))在使用中,但是這些值可應(yīng)用到大量各個(gè)數(shù)據(jù)元素。該增強(qiáng)考慮了該特性并利用來(lái)源值的中心表。各個(gè)注釋僅需要指向表的適當(dāng)行,而不需要攜帶其自身對(duì)該值的復(fù)本。3.標(biāo)簽的傳播—旦數(shù)據(jù)項(xiàng)具有來(lái)源標(biāo)簽,相同標(biāo)簽就傳播360到從其得到的任何其他數(shù)據(jù)。更具體地,對(duì)于具有輸入和輸出兩者的所有腳本操作,在前者的數(shù)據(jù)結(jié)構(gòu)中存在的任何來(lái)源標(biāo)簽將通過腳本編輯引擎240的標(biāo)簽傳播器組件270傳送到后者的對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu)。例如,JavaScriptString.subString()方法是取文本串為輸入并產(chǎn)生更短文本串作為輸出的操作。如果該方法用在根據(jù)本發(fā)明的腳本編輯引擎240中來(lái)從由"example.com"安全獲得的頁(yè)面提取一些文本,則提取的文本也將標(biāo)記有"example.com"的來(lái)源。對(duì)于該實(shí)施例,對(duì)對(duì)象執(zhí)行的任何腳本編輯操作應(yīng)當(dāng)被認(rèn)為是取該對(duì)象為輸入。如上面的
背景技術(shù):
部分中所表述的,腳本編輯引擎典型地以結(jié)構(gòu)化語(yǔ)言編寫并提供某些操作。這些操作由以該結(jié)構(gòu)化語(yǔ)言編寫的程序代碼定義。在本實(shí)施例中,在該部分中描述的額外行為通過將標(biāo)簽傳播功能添加到腳本編輯引擎內(nèi)的程序代碼來(lái)實(shí)現(xiàn)。在不實(shí)現(xiàn)本發(fā)明的腳本編輯引擎中,腳本將繼續(xù)要求如其將進(jìn)行的一系列操作,但是生成350來(lái)源標(biāo)簽然后透明地傳播360到用戶和腳本編程者。當(dāng)腳本操作對(duì)多于一個(gè)輸入項(xiàng)運(yùn)行、并且至少兩個(gè)輸入項(xiàng)具有不全來(lái)自相同來(lái)源的來(lái)源標(biāo)簽時(shí),輸出數(shù)據(jù)獲取特殊標(biāo)簽。因?yàn)闃?biāo)記數(shù)據(jù)除了其來(lái)源不能發(fā)送到任何地方,并且新數(shù)據(jù)的源包圍多個(gè)來(lái)源,所以在許可傳輸?shù)囊?guī)則內(nèi)不存在可發(fā)送到的位置。因此,特殊標(biāo)簽指示"無(wú)處(nowhere)",并且以此方式標(biāo)記的數(shù)據(jù)不能離開腳本編輯環(huán)境。在該具體實(shí)施例中,上述傳播利用四個(gè)不斷增加的限制性的來(lái)源標(biāo)簽類型無(wú)該項(xiàng)沒有來(lái)源標(biāo)簽,因?yàn)橥ㄟ^其獲得的HTTP會(huì)話或其它手段沒有指定為安全的。本地該項(xiàng)由用戶輸入或從本地文件加載。來(lái)源標(biāo)準(zhǔn)來(lái)源標(biāo)簽,指示從其獲得數(shù)據(jù)的位置。在腳本編輯環(huán)境中可能存在同時(shí)使用的許多不同的來(lái)源。無(wú)處通過其獲得該數(shù)據(jù)項(xiàng)的路徑涉及標(biāo)記有多于一個(gè)來(lái)源的數(shù)據(jù)。表1中示出在兩輸入腳本編輯操作的情況下交互的標(biāo)簽的這些種類對(duì)于輸入一個(gè)的標(biāo)簽類型對(duì)<table>tableseeoriginaldocumentpage10</column></row><table>表l就好像對(duì)于兩個(gè)輸入的操作,具有三個(gè)或更多輸入元素的腳本編輯操作將對(duì)其(各)輸出分配在輸入中找到的最限制性的標(biāo)簽類型,除了如果最限制性的類型是"來(lái)源"并且存在多于一個(gè)來(lái)源位置,"無(wú)處"將用于如上所述的輸出。在單個(gè)輸入操作的情況下,所有輸出簡(jiǎn)單地繼承輸入項(xiàng)的標(biāo)簽。圖5中表現(xiàn)了用于與腳本編輯操作的輸出相關(guān)聯(lián)的標(biāo)簽的確定的一系列步驟,盡管圖5中示出的具體操作序列僅涉及本發(fā)明的一個(gè)說明性實(shí)施例。根據(jù)該實(shí)施例,當(dāng)HTTP客戶端從其本地存儲(chǔ)器檢索400輸入數(shù)據(jù)(如檢索的網(wǎng)頁(yè))以開始處理時(shí),HTTP客戶端以傳統(tǒng)方式處理輸入數(shù)據(jù),直到標(biāo)識(shí)腳本。HTTP客戶端然后調(diào)用其腳本解釋器250。在執(zhí)行每個(gè)腳本指令之前,腳本解釋器提取410與輸入數(shù)據(jù)元素相關(guān)聯(lián)的標(biāo)簽組,并將其傳遞到標(biāo)簽傳播器270。標(biāo)簽傳播器然后應(yīng)用一組規(guī)則以確定對(duì)于腳本編輯操作的輸出適當(dāng)?shù)臉?biāo)簽。如果對(duì)輸入數(shù)據(jù)存在任何來(lái)源標(biāo)簽的檢查420確定沒有與輸入數(shù)據(jù)元素相關(guān)聯(lián)的標(biāo)簽,則該處理的捷徑(shortcut)是可能的。該"捷徑"在圖5的步驟420和步驟500之間的箭頭中示出。如果輸入沒有標(biāo)簽,則如步驟420所確定的,輸出也將沒有相關(guān)聯(lián)的標(biāo)簽。然而,如果通過用戶輸入或從本地文件加載新數(shù)據(jù)元素,則這些輸入將處理為具有標(biāo)簽類型"本地",在此情況下腳本編輯引擎的處理的輸出也將具有相關(guān)聯(lián)的標(biāo)簽類型"本地"(或,如果與其他標(biāo)記的輸入組合,則更限制性的標(biāo)簽類型)。這將在下面更詳細(xì)描述。如果在步驟420的確定是肯定的,則因?yàn)榇嬖谙嚓P(guān)輸入標(biāo)簽,所以在以最限制性的標(biāo)簽類型開始的序列中實(shí)現(xiàn)根據(jù)本實(shí)施例的標(biāo)簽傳播處理。即,通過標(biāo)簽傳播器270執(zhí)行的第一步驟包括確定430是否任何輸入具有標(biāo)簽類型"無(wú)處"。如果是,則標(biāo)簽類型"無(wú)處"與腳本編輯引擎的輸出數(shù)據(jù)元素或多個(gè)元素相關(guān)聯(lián)440。下面在跟隨示例性傳播序列的描述之后的題為"控制數(shù)據(jù)傳輸?shù)膩?lái)源的指示的使用"的部分下,更詳細(xì)地描述標(biāo)簽如何用于控制數(shù)據(jù)傳輸。然而,這里通過說明提供該控制的示例。當(dāng)數(shù)據(jù)元素具有相關(guān)聯(lián)的標(biāo)簽類型"無(wú)處"時(shí),腳本解釋器將能夠執(zhí)行500腳本指令,除了響應(yīng)于這些腳本指令的HTTP客戶端的操作將經(jīng)歷由相關(guān)聯(lián)的標(biāo)簽"無(wú)處"施加的限制。具體地,將阻止具有"無(wú)處"標(biāo)簽的數(shù)據(jù)元素傳輸?shù)侥_本編輯環(huán)境外。返回到圖5的傳播序列,如果沒有輸入元素具有標(biāo)簽類型"無(wú)處",則傳播器確定450對(duì)于具有多個(gè)不同"來(lái)源"標(biāo)簽的特定腳本指令是否存在多個(gè)輸入。如果是,則標(biāo)簽類型"無(wú)處"與輸出數(shù)據(jù)元素或多個(gè)元素相關(guān)聯(lián)440。如果步驟450的確定是否定的,則傳播器確定460對(duì)于當(dāng)前腳本操作的輸入數(shù)據(jù)元素是否具有單個(gè)"來(lái)源"類型標(biāo)簽(即,僅存在一個(gè)敏感數(shù)據(jù)元素,或所有敏感數(shù)據(jù)元素具有相同來(lái)源)。如果是,則相關(guān)"來(lái)源"類型標(biāo)簽與腳本指令的輸出數(shù)據(jù)元素相關(guān)聯(lián)470。如果在步驟460的確定是否定的,則傳播器確定480對(duì)當(dāng)前腳本指令的任何輸入是否具有相關(guān)聯(lián)的"本地"標(biāo)簽類型(包括由用戶輸入或從本地文件加載的數(shù)據(jù)元素,其被認(rèn)為具有"本地"標(biāo)簽_參見上述)。如果是,則"本地"標(biāo)簽與腳本操作的輸出數(shù)據(jù)元素相關(guān)聯(lián)490。已經(jīng)確定要與腳本編輯操作的輸出相關(guān)聯(lián)的標(biāo)簽之后,HTTP客戶端內(nèi)的腳本編輯引擎然后執(zhí)行其處理500,經(jīng)歷由如下所述的標(biāo)簽施加的對(duì)于數(shù)據(jù)傳輸?shù)南拗?。?duì)于腳本內(nèi)的每個(gè)腳本指令重復(fù)執(zhí)行步驟410到500,并且腳本編輯引擎隨著其執(zhí)行而傳播標(biāo)簽。除了腳本編輯操作外,可以有對(duì)腳本域起作用、但不是實(shí)際的腳本操作自身的其他操作。例如,在文本框中鍵入的用戶正創(chuàng)建"本地"數(shù)據(jù),但是用戶可將該"本地"數(shù)據(jù)與"來(lái)源"數(shù)據(jù)組合。在此情況下,標(biāo)簽傳播器組件(或在HTTP客戶端中其他地方運(yùn)行的等效組件)期望應(yīng)用規(guī)則以確定對(duì)于得到的數(shù)據(jù)適當(dāng)?shù)臉?biāo)簽。在本實(shí)施例中,HTTP客戶端調(diào)用標(biāo)簽傳播器來(lái)確定對(duì)于標(biāo)記數(shù)據(jù)的任何這種組合的適當(dāng)標(biāo)簽。在其他實(shí)施例中,標(biāo)簽傳播器可實(shí)現(xiàn)為與腳本編輯引擎分開的組件。在用戶鍵入到文本框的示例中,典型地對(duì)于每次按鍵調(diào)用腳本編輯引擎,使得其可激活被登記來(lái)通知改變的腳本的任何部分,所以腳本編輯引擎的標(biāo)簽傳播器組件容易地被調(diào)用以確定新數(shù)據(jù)的適當(dāng)標(biāo)簽。4.使用來(lái)源的指示以控制數(shù)據(jù)傳輸11某些腳本操作涉及從Web瀏覽器到網(wǎng)絡(luò)上任何地方的服務(wù)器的數(shù)據(jù)傳輸。例如,(如RFC1866中定義的)HTML形式可以在腳本控制下提交,可使用XMLHttpRequest(如上所述),或可指令瀏覽器訪問其"路徑"、"查詢"或"片段"部分已經(jīng)專門構(gòu)造為攜帶數(shù)據(jù)的手段的URL。本發(fā)明定義了在允許任何數(shù)據(jù)離開瀏覽器之前必須執(zhí)行的額外處理。所述行為以瀏覽器的結(jié)構(gòu)化語(yǔ)言程序代碼實(shí)現(xiàn),而不需要對(duì)在其中運(yùn)行的腳本的任何改變。使得標(biāo)識(shí)為能夠傳輸數(shù)據(jù)的任何腳本編輯操作依賴于其輸入數(shù)據(jù)的標(biāo)簽。一個(gè)腳本指令的輸入數(shù)據(jù)可以是之前腳本指令的輸出,在此情況下,上述標(biāo)簽的傳播將已經(jīng)確定了用于控制數(shù)據(jù)傳輸?shù)南嚓P(guān)標(biāo)簽。傳輸控制可實(shí)現(xiàn)為腳本編輯引擎240的組件,或可以在瀏覽器內(nèi)分開地實(shí)現(xiàn)。如果根據(jù)下面定義的規(guī)則不能傳輸數(shù)據(jù),則傳輸操作必定不能完成。操作優(yōu)選地還報(bào)告錯(cuò)誤(不必對(duì)用戶指出)。—些傳輸操作可能取多輸入,其可能潛在地具有不同標(biāo)簽。在此情況下,在允許傳輸規(guī)則之前,應(yīng)該參照標(biāo)簽傳播器270如上所述組合標(biāo)簽。如果傳輸?shù)臄?shù)據(jù)沒有任何類型的來(lái)源標(biāo)簽,則其可以自由地發(fā)出。這是不實(shí)現(xiàn)本發(fā)明的瀏覽器(除非提供替代數(shù)據(jù)保護(hù)機(jī)制)、以及處理不敏感的數(shù)據(jù)的瀏覽器的情況。如果數(shù)據(jù)攜帶特殊"無(wú)處"標(biāo)簽,則不能傳輸?shù)奖镜啬_本編輯環(huán)境外。如果數(shù)據(jù)攜帶類型"來(lái)源"的來(lái)源標(biāo)簽,則可以傳輸數(shù)據(jù),但僅傳輸?shù)脚c其標(biāo)簽兼容的位置。兼容位置是以下之一參具有相同DNS域或其子域(例如,其來(lái)源是"dev.company,com"的數(shù)據(jù)可發(fā)送到"docstore.dev.company,com,,);以及參駐留在對(duì)應(yīng)于標(biāo)簽內(nèi)指定的端口號(hào)的因特網(wǎng)協(xié)議端口上(如果標(biāo)簽指定端口號(hào));以及參如果標(biāo)簽指定路徑,還存在于該路徑上或其后代上(例如,其來(lái)源包括路徑'7即ps/expensetool,,的數(shù)據(jù)可發(fā)送至Ll"/即ps/expensetool/submitform,,)。如果數(shù)據(jù)攜帶特殊"本地"標(biāo)簽,則通過瀏覽器可實(shí)現(xiàn)下述規(guī)則1.如果腳本編輯引擎內(nèi)不存在具有"來(lái)源"或"無(wú)處"標(biāo)簽的數(shù)據(jù),則瀏覽器可以假設(shè)不涉及敏感數(shù)據(jù),并允許"本地"數(shù)據(jù)發(fā)送到任何地方。這具有不改變現(xiàn)有網(wǎng)頁(yè)和應(yīng)用的行為的優(yōu)點(diǎn),但是對(duì)于具有"本地"標(biāo)簽的數(shù)據(jù)替代的行為可能是優(yōu)選的,以避免當(dāng)首次創(chuàng)建新數(shù)據(jù)元素時(shí)的潛在安全性暴露。2.如果引擎中的一些數(shù)據(jù)是敏感的,則瀏覽器可配置為阻止"本地"數(shù)據(jù)的傳輸,或在傳輸"本地"信息之前詢問用戶。然而,如果委托決定給用戶,則必須認(rèn)識(shí)到用戶有時(shí)在他們不應(yīng)該接受安全性暴露時(shí)接受了安全性暴露。在許多情況下,在發(fā)送具有來(lái)源標(biāo)記的數(shù)據(jù)之前,由用戶輸入的數(shù)據(jù)將已經(jīng)通過正常處理組合,所以跟隨的將是對(duì)于"來(lái)源"標(biāo)簽的規(guī)則、而不是對(duì)于"本地"標(biāo)簽的規(guī)則。3.當(dāng)瀏覽器中的所有來(lái)源標(biāo)簽相同時(shí),通過允許"本地"數(shù)據(jù)傳輸?shù)皆搧?lái)源(同時(shí)仍然質(zhì)疑其到別處的分發(fā)),可處理許多情況而不用求助用戶控制。在常見情況下(如安全文檔編輯應(yīng)用),該解決方案平衡了安全性和可用性。上述一組規(guī)則達(dá)成了數(shù)據(jù)安全性和用戶體驗(yàn)的破壞之間的平衡,同時(shí)認(rèn)識(shí)到瀏覽器可以沒有這樣的信息的敏感性的明確認(rèn)識(shí)。5.加密數(shù)據(jù)的擴(kuò)展12上述特征提供了用于控制敏感性信息的傳輸?shù)耐暾陀欣南到y(tǒng)。然而,可以通過包括加密數(shù)據(jù)的概念以提供進(jìn)一步可用的能力的方式擴(kuò)展這些設(shè)備。注意,這與運(yùn)送中的數(shù)據(jù)流的任何SSL加密是完全分開的。該設(shè)備要求專門編寫腳本以利用它,這與可用不更改的腳本和頁(yè)面實(shí)現(xiàn)的基本發(fā)明不同。為了支持該擴(kuò)展,將使得在腳本編輯引擎中可用新操作,其可使用適當(dāng)公開的密碼將數(shù)據(jù)轉(zhuǎn)換到加密形式并從加密形式轉(zhuǎn)換數(shù)據(jù)。添加第五種來(lái)源標(biāo)簽"加密"。對(duì)于加密數(shù)據(jù)的規(guī)則如下創(chuàng)建數(shù)據(jù)可加密地到達(dá),在此情況下,這通過攜帶它的傳輸中的適當(dāng)?shù)腍TTP報(bào)頭指示。當(dāng)腳本編輯引擎的顯式加密支持用于執(zhí)行加密現(xiàn)有數(shù)據(jù)的腳本編輯操作時(shí),結(jié)果也標(biāo)記有該"加密"標(biāo)簽,無(wú)論其可能已經(jīng)攜帶的任何之前的標(biāo)簽。傳播通常,將加密數(shù)據(jù)與其他信息組合不太可能有用。然而其是可能的,在此情況下輸出將獲取沒有加密的輸入元素的標(biāo)簽(或如果存在多于一個(gè),則最限制性的這樣的標(biāo)簽),如對(duì)于上述正常傳播那樣。解密當(dāng)使用腳本編輯引擎的設(shè)備解密加密數(shù)據(jù)時(shí),輸出給出"無(wú)處"的來(lái)源標(biāo)簽并不能傳輸。傳輸標(biāo)記為"加密"的數(shù)據(jù)可傳輸?shù)饺魏蔚胤?,因?yàn)槠鋵?duì)于沒有持有密鑰的任何實(shí)體是無(wú)用的。因此,本發(fā)明將來(lái)源的指示與敏感數(shù)據(jù)(無(wú)論是標(biāo)記各個(gè)數(shù)據(jù)元素還是標(biāo)記網(wǎng)頁(yè))、包含敏感數(shù)據(jù)的文件或數(shù)據(jù)庫(kù)相關(guān)聯(lián),然后根據(jù)標(biāo)簽控制該數(shù)據(jù)的向上傳輸。敏感數(shù)據(jù)可由用戶輸入到客戶端數(shù)據(jù)處理系統(tǒng),或數(shù)據(jù)可保持在安全內(nèi)容服務(wù)器上,如保持在存儲(chǔ)的網(wǎng)頁(yè)內(nèi),但是本發(fā)明可應(yīng)用到被認(rèn)為足夠敏感以判斷控制其向上傳輸?shù)娜魏螖?shù)據(jù)。在本發(fā)明的上述實(shí)施例中,大量數(shù)據(jù)將沒有以此方式約束的其向上傳輸,因?yàn)榻?jīng)由因特網(wǎng)可用的大量數(shù)據(jù)意圖公開可用,并且因?yàn)閯?chuàng)建或編譯特定條信息的個(gè)人或組織可能已經(jīng)判斷不需要保護(hù)。然而,還有大量經(jīng)由數(shù)據(jù)處理網(wǎng)絡(luò)可訪問的私有信息,并可能通過"不信任的"腳本暴露,并且如果用戶要安全和有效地利用可用Web服務(wù)和腳本而不將其信息暴露給他人,則仍需要保護(hù)該信息。本領(lǐng)域技術(shù)人員將理解,在本發(fā)明范圍內(nèi)可以以各種方式修改或擴(kuò)展上述本發(fā)明的特定實(shí)施例,因此實(shí)施例的上述詳細(xì)描述應(yīng)當(dāng)被認(rèn)為是說明性的,而非限制本發(fā)明。例如,上述新的請(qǐng)求報(bào)頭僅表示本發(fā)明的一種可能的實(shí)現(xiàn),并且本發(fā)明的替代實(shí)施例不要求任何新請(qǐng)求報(bào)頭。替代地,通過根據(jù)本發(fā)明實(shí)施例的修改腳本編輯引擎、并且無(wú)論何時(shí)從第三方網(wǎng)站獲得該數(shù)據(jù)都將其標(biāo)記為敏感的,釋放和替代對(duì)類型XMLHttpRequest的請(qǐng)求的使用的安全性約束。類型XMLHttpRequest的請(qǐng)求當(dāng)前不能由腳本用于(至少不能直接用于)自從其下載腳本的服務(wù)器以外的服務(wù)器獲得數(shù)據(jù)。這阻止這樣的攻擊,其中惡意JavaScript利用用戶的信任或在防火墻之后的用戶的數(shù)據(jù)處理系統(tǒng)的位置,以從第三方站點(diǎn)讀取數(shù)據(jù)到Web瀏覽器中,然后將該數(shù)據(jù)傳輸回到腳本從其起源的站點(diǎn)。這被稱為"跨站點(diǎn)腳本編輯脆弱性"。使用根據(jù)本發(fā)明實(shí)施例的腳本編輯引擎內(nèi)的來(lái)源標(biāo)簽、并且將下載數(shù)據(jù)標(biāo)識(shí)為敏感的,可阻止這樣的攻擊而不用依賴對(duì)XMLHttpRequest的已知限制。因此,可許可從第三方站點(diǎn)下載數(shù)據(jù)用于有用的處理,同時(shí)將這樣的數(shù)據(jù)標(biāo)記為敏感的以維持安全性。其次,不同瀏覽器可響應(yīng)于接收到包括"敏感數(shù)據(jù)"標(biāo)志的數(shù)據(jù)而實(shí)現(xiàn)不同用于插入來(lái)源標(biāo)簽的機(jī)制;并且相關(guān)數(shù)據(jù)結(jié)構(gòu)內(nèi)的來(lái)源標(biāo)簽的類別和具體表示在本發(fā)明的不同實(shí)施例之間也可變化。一旦本領(lǐng)域技術(shù)人員閱讀了期望行為的上面的描述,就認(rèn)識(shí)到如本申請(qǐng)說明書中定義的本發(fā)明范圍內(nèi)的各種實(shí)現(xiàn)選擇。權(quán)利要求一種在腳本編輯環(huán)境內(nèi)執(zhí)行的、用于控制敏感數(shù)據(jù)的傳輸?shù)姆椒?,包括以下步驟將來(lái)源的指示與第一數(shù)據(jù)元素相關(guān)聯(lián);將來(lái)源的指示傳播到從第一數(shù)據(jù)元素生成的數(shù)據(jù)元素;以及限制第一數(shù)據(jù)元素和所述生成的數(shù)據(jù)元素僅傳輸?shù)皆S可的目的地,其中參照來(lái)源的指示標(biāo)識(shí)所述許可的目的地。2.如權(quán)利要求1所述的方法,其中將來(lái)源的指示與第一數(shù)據(jù)元素相關(guān)聯(lián)的步驟響應(yīng)于確定第一數(shù)據(jù)元素包括敏感數(shù)據(jù)而執(zhí)行。3.如權(quán)利要求1所述的方法,其中限制傳輸?shù)牟襟E響應(yīng)于確定所述第一數(shù)據(jù)元素包括敏感數(shù)據(jù)而執(zhí)行。4.如前述任一權(quán)利要求所述的方法,其中從遠(yuǎn)離腳本編輯環(huán)境的源數(shù)據(jù)處理系統(tǒng)獲得第一數(shù)據(jù)元素,并且其中限制傳輸?shù)牟襟E包括阻止第一數(shù)據(jù)元素傳輸?shù)皆磾?shù)據(jù)處理系統(tǒng)以外的任何目的地。5.如前述任一權(quán)利要求所述的方法,其中將來(lái)源的指示與第一數(shù)據(jù)元素相關(guān)聯(lián)的步驟響應(yīng)于確定要通過腳本編輯操作處理第一數(shù)據(jù)元素而執(zhí)行。6.如前述任一權(quán)利要求所述的方法,其中關(guān)聯(lián)、傳播和限制的步驟在客戶端數(shù)據(jù)處理裝置上執(zhí)行,該客戶端數(shù)據(jù)處理裝置包括用于與遠(yuǎn)程服務(wù)器數(shù)據(jù)處理裝置通信的網(wǎng)絡(luò)連接接口,其中所述方法還包括經(jīng)由網(wǎng)絡(luò)連接接口將請(qǐng)求發(fā)送到遠(yuǎn)程服務(wù)器數(shù)據(jù)處理裝置,以從遠(yuǎn)程服務(wù)器數(shù)據(jù)處理裝置檢索第一數(shù)據(jù)元素;以及從遠(yuǎn)程服務(wù)器數(shù)據(jù)處理裝置接收數(shù)據(jù)。7.如權(quán)利要求6所述的方法,其中發(fā)送請(qǐng)求的步驟包括在該請(qǐng)求內(nèi)指定客戶端數(shù)據(jù)處理裝置包括用于執(zhí)行限制傳輸?shù)牟襟E的部件。8.如權(quán)利要求6或權(quán)利要求7所述的方法,其中將來(lái)源的指示與第一數(shù)據(jù)元素相關(guān)聯(lián)的步驟響應(yīng)于從遠(yuǎn)程服務(wù)器數(shù)據(jù)處理裝置接收數(shù)據(jù)而執(zhí)行,該數(shù)據(jù)包括關(guān)于數(shù)據(jù)包括敏感數(shù)據(jù)的指示。9.如權(quán)利要求6所述的方法,其中發(fā)送和接收的步驟通過HTTP客戶端程序執(zhí)行,并且其中通過HTTP客戶端程序響應(yīng)于HTTP請(qǐng)求而獲得第一數(shù)據(jù)元素,該HTTP請(qǐng)求包括HTTP客戶端程序能夠提供對(duì)敏感數(shù)據(jù)的保護(hù)的指示。10.如權(quán)利要求6到9之一所述的方法,其中關(guān)聯(lián)和傳播的步驟通過在客戶端數(shù)據(jù)處理裝置內(nèi)運(yùn)行的腳本編輯引擎實(shí)現(xiàn)。11.如前面任一權(quán)利要求所述的方法,其中傳播來(lái)源的指示的步驟包括標(biāo)識(shí)對(duì)于腳本編輯操作的一個(gè)或多個(gè)輸入組,該腳本編輯操作生成一個(gè)或多個(gè)輸出;標(biāo)識(shí)與一個(gè)或多個(gè)輸入相關(guān)聯(lián)的任何來(lái)源的指示;從輸入的來(lái)源的指示得到來(lái)源的二次指示;以及與一個(gè)或多個(gè)生成的輸出相關(guān)聯(lián)的保存來(lái)源的二次指示。12.如前面任一權(quán)利要求所述的方法,其中從遠(yuǎn)離腳本編輯環(huán)境的數(shù)據(jù)處理系統(tǒng)通過腳本編輯操作檢索第一數(shù)據(jù)元素。13.—種數(shù)據(jù)處理系統(tǒng),包括至少一個(gè)數(shù)據(jù)處理單元;至少一個(gè)數(shù)據(jù)存儲(chǔ)單元;腳本解釋器;用于將來(lái)源的指示與第一數(shù)據(jù)元素相關(guān)聯(lián)的部件;用于將來(lái)源的指示傳播到從第一數(shù)據(jù)元素生成的新數(shù)據(jù)元素的部件;以及用于限制將第一數(shù)據(jù)元素和所述生成的數(shù)據(jù)元素從數(shù)據(jù)處理系統(tǒng)僅傳輸?shù)皆S可的目的地的部件,其中參考來(lái)源的指示標(biāo)識(shí)所述許可的目的地。14.如權(quán)利要求13所述的數(shù)據(jù)處理系統(tǒng),還包括用于與遠(yuǎn)程服務(wù)器數(shù)據(jù)處理裝置通信的網(wǎng)絡(luò)連接接口;用于經(jīng)由網(wǎng)絡(luò)連接接口將請(qǐng)求發(fā)送到遠(yuǎn)程服務(wù)器數(shù)據(jù)處理裝置、以從遠(yuǎn)程服務(wù)器數(shù)據(jù)處理裝置檢索第一數(shù)據(jù)元素的部件;以及用于從遠(yuǎn)程服務(wù)器數(shù)據(jù)處理裝置接收數(shù)據(jù)的部件。15.如權(quán)利要求13或權(quán)利要求14所述的數(shù)據(jù)處理系統(tǒng),其中用于關(guān)聯(lián)的部件和用于傳播的部件包括腳本編輯引擎的組件。16.如權(quán)利要求13到15的任一所述的數(shù)據(jù)處理系統(tǒng),其中用于關(guān)聯(lián)的部件、用于傳播的部件和用于限制的部件包括HTTP客戶端程序的組件。17.如權(quán)利要求13所述的數(shù)據(jù)處理系統(tǒng),其中用于限制傳輸?shù)牟考▽S眉呻娐贰?8.—種計(jì)算機(jī)程序產(chǎn)品,包括在記錄介質(zhì)上記錄的程序代碼,用于控制數(shù)據(jù)處理裝置,在該數(shù)據(jù)處理裝置上運(yùn)行程序代碼以執(zhí)行根據(jù)權(quán)利要求1到12的任一所述的方法。全文摘要提供了一種方法、裝置和計(jì)算機(jī)程序,用于跟蹤數(shù)據(jù)的來(lái)源并控制數(shù)據(jù)的傳輸。在一個(gè)實(shí)施例中,通過響應(yīng)于數(shù)據(jù)內(nèi)放置的來(lái)源標(biāo)簽的HTTP客戶端的腳本編輯引擎內(nèi)的新功能,限制通過腳本操作的敏感數(shù)據(jù)的傳輸,以阻止傳輸?shù)皆撁舾袛?shù)據(jù)的源以外的任何網(wǎng)絡(luò)位置。與數(shù)據(jù)輸入相關(guān)聯(lián)的來(lái)源標(biāo)簽傳播到任何輸出數(shù)據(jù)項(xiàng),使得還可控制得到的信息的傳輸。文檔編號(hào)G06F21/60GK101779436SQ200880102951公開日2010年7月14日申請(qǐng)日期2008年8月5日優(yōu)先權(quán)日2007年8月15日發(fā)明者彼得·沃頓,朱利安·L·弗雷德曼申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司