對(duì)值中的標(biāo)簽進(jìn)行編碼以俘獲信息流的制作方法
【專(zhuān)利摘要】用于對(duì)動(dòng)態(tài)語(yǔ)言值中的安全性標(biāo)簽進(jìn)行編碼的方法、服務(wù)器和系統(tǒng)允許客戶端應(yīng)用程序內(nèi)的交叉腳本通信同時(shí)限制允許傳送回到主機(jī)服務(wù)器的信息類(lèi)型。在編譯期間執(zhí)行靜態(tài)分析,且使用結(jié)果來(lái)產(chǎn)生和插入額外代碼,所述額外代碼在程序的執(zhí)行期間更新、修改和傳播附加到值(例如,JavaScript值)的標(biāo)簽(例如,JavaScript標(biāo)簽)。為了支持允許與其它基于網(wǎng)絡(luò)的系統(tǒng)的有力集成的流行語(yǔ)言特征,允許惡意代碼在本地(例如,在客戶端上)執(zhí)行操作,且檢測(cè)和預(yù)防機(jī)制識(shí)別且停止惡意代碼使其無(wú)法經(jīng)由網(wǎng)絡(luò)發(fā)送請(qǐng)求或搜集的信息,從而歸化攻擊且改善嵌入動(dòng)態(tài)語(yǔ)言代碼的應(yīng)用程序的安全性。
【專(zhuān)利說(shuō)明】對(duì)值中的標(biāo)簽進(jìn)行編碼以俘獲信息流
[0001]相關(guān)申請(qǐng)案
[0002]本申請(qǐng)案主張2011年11月7日申請(qǐng)的題目為“對(duì)JavaScript值中的標(biāo)簽進(jìn)行編碼以俘獲信息流(Encoding Labels in JavaScript Values to Capture InformationFlows) ”第61/556,658號(hào)美國(guó)臨時(shí)專(zhuān)利申請(qǐng)案的優(yōu)先權(quán)權(quán)益,所述美國(guó)臨時(shí)申請(qǐng)案的整個(gè)內(nèi)容以引用的方式并入本文。
【背景技術(shù)】
[0003]近年 來(lái), 動(dòng)態(tài) 腳本 語(yǔ)言(例如,.UivaSci iplteK Ac!ioiiScHpK.'<K DAKI (.'<), 1)UP、Fylhoud Ruby 等等)已變得越來(lái)越有力,
且因此,現(xiàn)在較廣泛地用以實(shí)施在線和基于網(wǎng)絡(luò)的軟件應(yīng)用程序。動(dòng)態(tài)腳本語(yǔ)言現(xiàn)在包含通常與高級(jí)軟件語(yǔ)言、靈活鍵入系統(tǒng)、庫(kù)擴(kuò)展集合以及有力地支持與其它基于網(wǎng)絡(luò)的系統(tǒng)的集成的其它特征相關(guān)聯(lián)的若干特征。出于這些和其它原因,動(dòng)態(tài)腳本語(yǔ)言現(xiàn)在被多數(shù)Web2.0應(yīng)用程序使用且流行性在增長(zhǎng)。
[0004]在線和基于網(wǎng)絡(luò)的軟件開(kāi)發(fā)的另一增長(zhǎng)趨勢(shì)是將第三方腳本嵌入到客戶端應(yīng)用程序(例如,網(wǎng)頁(yè)、瀏覽器等等)中。嵌入的腳本可用以在第三方站點(diǎn)上檢索和放置內(nèi)容和可執(zhí)行代碼(例如,廣告條幅、股票報(bào)價(jià)機(jī)等等)。嵌入的腳本也可用以實(shí)施聚合,其是將來(lái)自?xún)蓚€(gè)或兩個(gè)以上源的數(shù) 據(jù)、代碼、特征、服務(wù)和/或功能組合以產(chǎn)生新服務(wù)或應(yīng)用程序的網(wǎng)頁(yè)或應(yīng)用程序。許多動(dòng)態(tài)腳本語(yǔ)言包含支持這些增長(zhǎng)趨勢(shì)的特征,且因此,正更頻繁地用以在網(wǎng)站中嵌入腳本。這些嵌入的第三方腳本可能包含允許攻擊者開(kāi)發(fā)語(yǔ)言弱點(diǎn)來(lái)搜集敏感信息且將其發(fā)送到攻擊者控制的服務(wù)器的惡意代碼。改善嵌入第三方腳本語(yǔ)言的腳本語(yǔ)言和應(yīng)用程序的安全性正在變?yōu)樵絹?lái)越重要的設(shè)計(jì)準(zhǔn)則。
【發(fā)明內(nèi)容】
[0005]各種方面包含經(jīng)配置以允許在軟件客戶端內(nèi)允許交叉腳本通信同時(shí)限制允許傳送回到主機(jī)服務(wù)器的信息類(lèi)型的系統(tǒng)、方法和裝置。在一方面中,一種用于對(duì)動(dòng)態(tài)語(yǔ)言值中的安全性標(biāo)簽進(jìn)行編碼的方法可包含:分配所述動(dòng)態(tài)語(yǔ)言值中的若干位以存儲(chǔ)經(jīng)編碼標(biāo)簽;保留所述經(jīng)分配位中的一個(gè)位以表明安全性標(biāo)簽是否在第一模式或第二模式中編碼;以及用識(shí)別發(fā)源域的安全性標(biāo)簽對(duì)所述動(dòng)態(tài)語(yǔ)言值加標(biāo)簽,所述安全性標(biāo)簽是在所述第一模式或所述第二模式中編碼。在一方面中,所述方法可進(jìn)一步包含:確定所述所保留位是否指示所述第一模式或所述第二模式被選定;在確定所述所保留位指示所述第一模式被選定的情況下將安全性標(biāo)簽識(shí)別為經(jīng)編碼為獨(dú)熱位且執(zhí)行逐位或運(yùn)算;以及在確定所述所保留位指示所述第二模式被選定的情況下將所述安全性標(biāo)簽識(shí)別為到存儲(chǔ)實(shí)際標(biāo)簽信息的標(biāo)簽管理器數(shù)據(jù)結(jié)構(gòu)中的參考且執(zhí)行存儲(chǔ)器讀取操作。在一方面中,用識(shí)別發(fā)源域的安全性標(biāo)簽對(duì)所述動(dòng)態(tài)語(yǔ)言值加標(biāo)簽可包含在從源自其它域的腳本存取信息的腳本的數(shù)目小于所分配位的數(shù)目的情況下在所述第一模式中編碼動(dòng)態(tài)語(yǔ)言標(biāo)簽。在一方面中,分配動(dòng)態(tài)語(yǔ)言值中的若干位以存儲(chǔ)經(jīng)編碼標(biāo)簽可包含分配JavaScript值中的若干位以存儲(chǔ)經(jīng)編碼標(biāo)簽。在一方面中,所述方法可使用包含例如以下各項(xiàng)的任何動(dòng)態(tài)或腳本語(yǔ)言來(lái)實(shí)施:JavaScript?、ActionScript?> DART?、PHP> Python?^ Ruby、PERL、Scala、Erlang、
Candle 以及 Java?和.NET 語(yǔ)言。
[0006]另外方面包含一種計(jì)算裝置,其包含:用于分配動(dòng)態(tài)語(yǔ)言值中的若干位以存儲(chǔ)經(jīng)編碼標(biāo)簽的裝置;用于保留所述經(jīng)分配位中的一個(gè)位以表明安全性標(biāo)簽是否在第一模式或第二模式中編碼的裝置;以及用于用識(shí)別發(fā)源域的安全性標(biāo)簽對(duì)所述動(dòng)態(tài)語(yǔ)言值加標(biāo)簽的裝置,所述安全性標(biāo)簽是在所述第一模式或所述第二模式中編碼。在一方面中,所述計(jì)算裝置包含:用于確定所述所保留位是否指示所述第一模式或所述第二模式被選定的裝置;用于在確定所述所保留位指示所述第一模式被選定的情況下將安全性標(biāo)簽識(shí)別為經(jīng)編碼為獨(dú)熱位且執(zhí)行逐位或運(yùn)算的裝置;以及用于在確定所述所保留位指示所述第二模式被選定的情況下將所述安全性標(biāo)簽識(shí)別為到存儲(chǔ)實(shí)際標(biāo)簽信息的標(biāo)簽管理器數(shù)據(jù)結(jié)構(gòu)中的參考且執(zhí)行存儲(chǔ)器讀取操作的裝置。在又一方面中,用于用識(shí)別發(fā)源域的安全性標(biāo)簽對(duì)所述動(dòng)態(tài)語(yǔ)言值加標(biāo)簽的裝置可包含用于在從源自其它域的腳本存取信息的腳本的數(shù)目小于所分配位的數(shù)目的情況下在所述第一模式中編碼動(dòng)態(tài)語(yǔ)言標(biāo)簽的裝置。在又一方面中,用于分配動(dòng)態(tài)語(yǔ)言值中的若干位的裝置可包含用于分配選自由以下各項(xiàng)組成的群組的語(yǔ)言中的若干位的裝置:java?、JavaScript?、ActionScript?, DART?、PHP、Python?、Ruby、PERL、Scala、Erlang、Candle 和.NET 語(yǔ)言。
[0007]另外方面包含一種計(jì)算裝置,其包含處理器,所述處理器以處理器可執(zhí)行指令配置以執(zhí)行用于對(duì)動(dòng)態(tài)語(yǔ)言值中的安全性標(biāo)簽進(jìn)行編碼的操作,所述操作可包含:分配所述動(dòng)態(tài)語(yǔ)言值中的若干位以存儲(chǔ)經(jīng)編碼標(biāo)簽;保留所述經(jīng)分配位中的一個(gè)位以表明所述安全性標(biāo)簽是否在第一模式或第二模式中編碼;以及用識(shí)別發(fā)源域的安全性標(biāo)簽對(duì)所述動(dòng)態(tài)語(yǔ)言值加標(biāo)簽,所述安全性標(biāo)簽是在所述第一模式或所述第二模式中編碼。在一方面中,所述處理器可以處理器可執(zhí)行指令配置以執(zhí)行可進(jìn)一步包含以下各項(xiàng)的操作:確定所述所保留位是否指示所述第一模式或所述第二模式被選定;在確定所述所保留位指示所述第一模式被選定的情況下將安全性標(biāo)簽識(shí)別為經(jīng)編碼為獨(dú)熱位且執(zhí)行逐位或運(yùn)算;以及在確定所述所保留位指示所述第二模式被選定的情況下將所述安全性標(biāo)簽識(shí)別為到存儲(chǔ)實(shí)際標(biāo)簽信息的標(biāo)簽管理器數(shù)據(jù)結(jié)構(gòu)中的參考且執(zhí)行存儲(chǔ)器讀取操作。在又一方面中,所述處理器可以處理器可執(zhí)行指令配置以使得用識(shí)別發(fā)源域的安全性標(biāo)簽對(duì)所述動(dòng)態(tài)語(yǔ)言值加標(biāo)簽包含在從源自其它域的腳本存取信息的腳本的數(shù)目小于所分配位的數(shù)目的情況下在所述第一模式中編碼動(dòng)態(tài)語(yǔ)言標(biāo)簽。在又一方面中,所述處理器可以處理器可執(zhí)行指令配置以使得分配所述動(dòng)態(tài)語(yǔ)言值中的若干位包含分配選自由以下各項(xiàng)組成的群組的語(yǔ)言中的若干位:Java?、JavaScript?, ActionScript?、DART?、PHP, Python?, Ruby、PERL、Scala、Erlang、Candle 和.NET 語(yǔ)言。
[0008]另外方面包含一種其上存儲(chǔ)有處理器可執(zhí)行軟件指令的非暫時(shí)性計(jì)算機(jī)可讀存儲(chǔ)媒體,所述處理器可執(zhí)行軟件指令經(jīng)配置以致使處理器執(zhí)行用于對(duì)動(dòng)態(tài)語(yǔ)言值中的安全性標(biāo)簽進(jìn)行編碼的操作,所述操作包含:分配所述動(dòng)態(tài)語(yǔ)言值中的若干位以存儲(chǔ)經(jīng)編碼標(biāo)簽;保留所述經(jīng)分配位中的一個(gè)位以表明所述安全性標(biāo)簽是否在第一模式或第二模式中編碼;以及用識(shí)別發(fā)源域的安全性標(biāo)簽對(duì)所述動(dòng)態(tài)語(yǔ)言值加標(biāo)簽,所述安全性標(biāo)簽是在所述第一模式或所述第二模式中編碼。在一方面中,所述存儲(chǔ)的處理器可執(zhí)行軟件指令可進(jìn)一步經(jīng)配置以致使處理器執(zhí)行包含以下各項(xiàng)的操作:確定所述所保留位是否指示所述第一模式或所述第二模式被選定;在確定所述所保留位指示所述第一模式被選定的情況下將安全性標(biāo)簽識(shí)別為經(jīng)編碼為獨(dú)熱位且執(zhí)行逐位或運(yùn)算;以及在確定所述所保留位指示所述第二模式被選定的情況下將所述安全性標(biāo)簽識(shí)別為到存儲(chǔ)實(shí)際標(biāo)簽信息的標(biāo)簽管理器數(shù)據(jù)結(jié)構(gòu)中的參考且執(zhí)行存儲(chǔ)器讀取操作。在又一方面中,所述存儲(chǔ)的處理器可執(zhí)行軟件指令可進(jìn)一步經(jīng)配置以致使處理器執(zhí)行操作以使得用識(shí)別發(fā)源域的安全性標(biāo)簽對(duì)所述動(dòng)態(tài)語(yǔ)言值加標(biāo)簽包含在從源自其它域的腳本存取信息的腳本的數(shù)目小于所分配位的數(shù)目的情況下在所述第一模式中編碼動(dòng)態(tài)語(yǔ)言標(biāo)簽。在又一方面中,分配動(dòng)態(tài)語(yǔ)言值中的若干位可包含分配選自由以下各項(xiàng)組成的群組的語(yǔ)言中的若干位:
[0009]
Java?、JavaScript?、A ctionScript-- DART?, PHP, Python?、Ruby、PERL、Scala、
[0010]Erlang、Candle 和.NET 語(yǔ)言。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0011]并入本文且組成本說(shuō)明書(shū)的一部分的【專(zhuān)利附圖】
【附圖說(shuō)明】本發(fā)明的示范性方面,且連同上文給出的一股描述以及下文給出的詳細(xì)描述一起用以闡釋本發(fā)明的特征。
[0012]圖1是圖解說(shuō)明具有從多個(gè)域嵌入腳本的客戶端應(yīng)用程序的實(shí)例計(jì)算網(wǎng)絡(luò)中的邏輯流的組件框圖。
[0013]圖2是可用以使用隱式信息流來(lái)滲漏出安全變量的實(shí)例腳本的圖解說(shuō)明。
[0014]圖3是用于跟蹤信息流且防止惡意代碼與遠(yuǎn)程服務(wù)器通信的一方面方法的過(guò)程流程圖。
[0015]圖4A到4B是圖解說(shuō)明用于存儲(chǔ)動(dòng)態(tài)值以使得可識(shí)別嘗試傳送從交叉腳本操作獲得的信息的腳本的標(biāo)記的消息結(jié)構(gòu)圖。
[0016]圖5是用于在運(yùn)行時(shí)間引擎中傳播標(biāo)簽的一方面方法的過(guò)程流程圖。
[0017]圖6是圖解說(shuō)明根據(jù)一方面的在傳播標(biāo)簽時(shí)由邏輯組件存儲(chǔ)的值的數(shù)據(jù)結(jié)構(gòu)圖。
[0018]圖7是用于使用有效地加標(biāo)簽的多級(jí)值來(lái)阻止受污染數(shù)據(jù)泄露到服務(wù)器或第三方的一方面方法的過(guò)程流程圖。
[0019]圖8是適合于與各種方面一起使用的計(jì)算裝置的組件框圖。
[0020]圖9是適合于與各種方面一起使用的實(shí)例移動(dòng)裝置的圖解說(shuō)明。
[0021]圖10是適合于與各種方面一起使用的實(shí)例個(gè)人計(jì)算機(jī)的圖解說(shuō)明。
【具體實(shí)施方式】
[0022]將參考附圖詳細(xì)描述各種方面。只要可能,在附圖中將始終使用相同參考標(biāo)號(hào)來(lái)指代相同或相似部分。對(duì)特定實(shí)例和實(shí)施方案做出的參考是用于說(shuō)明性目的,且既定不限制本發(fā)明或權(quán)利要求書(shū)的范圍。
[0023]術(shù)語(yǔ)“計(jì)算裝置”一股用以指代以下各項(xiàng)中的任一者或全部:服務(wù)器、個(gè)人計(jì)算機(jī)、移動(dòng)裝置、蜂窩式電話、平板計(jì)算機(jī)、膝上型計(jì)算機(jī)、上網(wǎng)本、掌上型計(jì)算機(jī)、個(gè)人數(shù)據(jù)助理(PDA)、無(wú)線電子郵件接收器(例如,Blackberry?和Treo?裝置)、具有多媒體因特網(wǎng)功能的蜂窩式電話(例如,Blackberry Storm?)、全球定位系統(tǒng)(GPS)接收器,無(wú)線游戲控制器、個(gè)人計(jì)算機(jī),以及包含可編程處理器的類(lèi)似個(gè)人電子裝置。雖然各種方面尤其有用于具有有限處理能力的例如蜂窩式電話等移動(dòng)裝置中,但所述方面一股有用于執(zhí)行以動(dòng)態(tài)和/或腳本語(yǔ)言編寫(xiě)的腳本和應(yīng)用程序的任何計(jì)算裝置中。
[0024]本文使用術(shù)語(yǔ)“聚合”來(lái)指代將來(lái)自?xún)蓚€(gè)或兩個(gè)以上源的數(shù)據(jù)、內(nèi)容、代碼、特征、服務(wù)和/或功能(統(tǒng)稱(chēng)為“內(nèi)容”)組合以產(chǎn)生新服務(wù)/應(yīng)用程序的客戶端應(yīng)用程序或網(wǎng)頁(yè)。所述內(nèi)容可以繼承和相干方式組合,或可分散且不相連。聚合可為基于服務(wù)器的或基于客戶端的。服務(wù)器側(cè)聚合通常在充當(dāng)客戶端應(yīng)用程序(例如,瀏覽器)與一個(gè)或一個(gè)以上主機(jī)網(wǎng)站之間的代理的服務(wù)器上整合內(nèi)容??蛻舳藗?cè)聚合直接在客戶端應(yīng)用程序上整合內(nèi)容。聚合還可與作為服務(wù)提供的軟件(SaaS)或與面向服務(wù)的架構(gòu)(SOA) —起使用。
[0025]術(shù)語(yǔ)“動(dòng)態(tài)語(yǔ)言”和“腳本語(yǔ)言”在本申請(qǐng)案中相關(guān)聯(lián)地且可互換地使用,且可指代用以編寫(xiě)在運(yùn)行時(shí)間被解譯、編譯或動(dòng)態(tài)翻譯的程序(本文為“腳本”)的任何動(dòng)態(tài)或腳本語(yǔ)言,或支持及時(shí)制(iuSt-1n-time,JIT)編譯的任何語(yǔ)言。這些術(shù)語(yǔ)也可指代包含運(yùn)行時(shí)間、虛擬機(jī)和/或動(dòng)態(tài)編譯的任何語(yǔ)目。本申請(qǐng)案的范圍內(nèi)的動(dòng)態(tài)和腳本語(yǔ)目的實(shí)例包含例如 JavaScript?、ActionScript?、DART?、PHP、Python?、Ruby、PERL、Scala、
Erlang、Candle以及Java?、.NET語(yǔ)言和未來(lái)可開(kāi)發(fā)的其它語(yǔ)言。
[0026]本文使用JavaScript?和JavaScript相關(guān)術(shù)語(yǔ)來(lái)描述各種方面,作為各種方面可使用或解決的動(dòng)態(tài)語(yǔ)言的方便實(shí)例。然而應(yīng)了解,涉及JwaScript?的實(shí)例以及本文對(duì)JavaScript?語(yǔ)言的其它參考是僅用于說(shuō)明目的,且既定不將描述或權(quán)利要求書(shū)限制于所述特定類(lèi)型的動(dòng)態(tài)語(yǔ)言。因此,權(quán)利要求書(shū)的范圍不應(yīng)闡釋為陳述或要求JawScript?,除非權(quán)利要求書(shū)中特定陳述。
[0027]許多動(dòng)態(tài)語(yǔ)言使得能夠從源自許多不同網(wǎng)站的內(nèi)容和代碼(庫(kù)、廣告等等)形成客戶端應(yīng)用程序,且軟件開(kāi)發(fā)中的增長(zhǎng)趨勢(shì)是在單個(gè)網(wǎng)站上嵌入許多不同的第三方腳本。這些動(dòng)態(tài)語(yǔ)言允許在運(yùn)行時(shí)間從多個(gè)源下載嵌入的第三方代碼。嵌入的腳本可能夠存取托管網(wǎng)頁(yè)上的敏感信息(例如,小文本、位置欄、公司顧客賬戶等等),且多數(shù)瀏覽器允許這些腳本動(dòng)態(tài)地存取和修改來(lái)自嵌入頁(yè)的變量和信息。惡意代碼可利用這些和其它弱點(diǎn)從用戶搜集敏感信息,且嘗試將此信息發(fā)送到攻擊者控制的服務(wù)器,所述服務(wù)器可使用所述信息來(lái)保持對(duì)用戶的欺騙。惡意代碼還可在用戶不同意或不知道的情況下存取/修改存儲(chǔ)在統(tǒng)一資源定位符(URL)串變量中的值以將頁(yè)重定向到惡意站點(diǎn)。提供基于網(wǎng)絡(luò)的安全性的現(xiàn)存方法不善于處置這些類(lèi)型的攻擊和/或過(guò)于麻煩而無(wú)法在例如移動(dòng)計(jì)算裝置等受約束的計(jì)算環(huán)境中實(shí)施。
[0028]除了上文提到的弱點(diǎn),許多動(dòng)態(tài)語(yǔ)言允許攻擊者添加和/或修改文檔對(duì)象模型(DOM)對(duì)象以發(fā)送各種種類(lèi)的網(wǎng)絡(luò)請(qǐng)求(例如,對(duì)圖像的AJAX請(qǐng)求和/或GET請(qǐng)求),其可結(jié)合其它語(yǔ)言特征(例如,鼠標(biāo)懸停效果)使用以起始注入攻擊。注入攻擊允許攻擊者插入執(zhí)行惡意動(dòng)作的代碼而不顯著影響用戶體驗(yàn),且在運(yùn)行時(shí)間行為中沒(méi)有任何可觀察到的差異的情況下,用戶通常不會(huì)注意他們的數(shù)據(jù)已經(jīng)被滲漏出。而且,許多動(dòng)態(tài)語(yǔ)言支持使其不受傳統(tǒng)的靜態(tài)分析技術(shù)影響的靈活的鍵入系統(tǒng)。而且,客戶端應(yīng)用程序(例如,網(wǎng)絡(luò)瀏覽器)通常允許在共享的上下文和存儲(chǔ)器空間內(nèi)動(dòng)態(tài)地加載和執(zhí)行腳本和庫(kù)。這些特征允許惡意和善意的作者遞送用于在客戶端計(jì)算裝置上執(zhí)行的可用以起始攻擊的腳本。用于識(shí)別惡意代碼且防止此些攻擊的現(xiàn)存方法通常需要對(duì)信息安全性的完整檢驗(yàn)和/或復(fù)雜的加標(biāo)簽方案,且過(guò)于低效、復(fù)雜且昂貴而無(wú)法在受約束的計(jì)算環(huán)境(例如,移動(dòng)計(jì)算裝置等等)中實(shí)施。
[0029]用于針對(duì)上文提到的情形防止安全性侵犯的現(xiàn)存解決方案大體上包含在兩個(gè)流行的安全性模型中的一者處實(shí)施:沙箱模型;以及同源策略(SOP)模型。沙箱模型允許客戶端應(yīng)用程序通過(guò)防止多個(gè)內(nèi)容源彼此交互而限制惡意代碼可造成的損害量。實(shí)施沙箱模型的系統(tǒng)可限制所述交互以使得防止特定客戶端(例如,瀏覽器標(biāo)簽頁(yè)、瀏覽器等等)內(nèi)的數(shù)據(jù)傳送到其它客戶端或本地系統(tǒng)。舉例來(lái)說(shuō),當(dāng)訪問(wèn)網(wǎng)頁(yè)時(shí),實(shí)施沙箱模型的客戶端可防止對(duì)主機(jī)計(jì)算裝置上的未經(jīng)授權(quán)套接字和/或文件的存取和/或與未經(jīng)授權(quán)網(wǎng)站的通信。作為另一實(shí)例,實(shí)施沙箱模型的客戶端可能要求嵌入的腳本僅執(zhí)行網(wǎng)絡(luò)相關(guān)動(dòng)作,而不是通用編程任務(wù)(例如,創(chuàng)建和讀取文件等等)。
[0030]實(shí)施同源策略(SOP)模型的客戶端大體上將嵌入的腳本的存取約束于不源自同一源的信息。舉例來(lái)說(shuō),同源策略可準(zhǔn)許具有相同發(fā)源的腳本存取彼此的方法和對(duì)象,但防止具有不同發(fā)源的腳本存取彼此的方法和對(duì)象。以此方式,實(shí)施同源策略(SOP)的客戶端可防止惡意腳本破壞屬于不同域的信息的機(jī)密性和完整性。
[0031]雖然這些模型提供某些安全性改善,但當(dāng)前實(shí)施方案大體上過(guò)于受限、過(guò)于低效、過(guò)于低能和/或過(guò)于昂貴而無(wú)法在受約束的計(jì)算環(huán)境中實(shí)施。而且,由于現(xiàn)存安全性模型(例如,沙箱、SOP等等)大體上限制腳本間和腳本上的通信,因此所述模型不善于針對(duì)上文論述的新型和新興技術(shù)以及編程技術(shù)(例如,聚合、遠(yuǎn)程API等等)來(lái)平衡安全性水平與用戶所需的功能性。例如聚合使現(xiàn)存安全性解決方案的實(shí)施復(fù)雜化,因?yàn)槠浣?jīng)常含有來(lái)自產(chǎn)生共享對(duì)象的不同域的協(xié)作腳本。為了支持這些共享對(duì)象的產(chǎn)生,網(wǎng)頁(yè)無(wú)法使用同源策略(SOP)隔離來(lái)自不同域的代碼/腳本。如果攻擊者設(shè)法將代碼注入到此網(wǎng)頁(yè)中,那么整個(gè)頁(yè)可能受損。
[0032]各種方面通過(guò)在客戶端內(nèi)允許交叉腳本通信同時(shí)限制允許傳送回到主機(jī)服務(wù)器的信息類(lèi)型而克服了當(dāng)前安全性方法的這些和其它限制。為了支持允許與上文論述的其它基于網(wǎng)絡(luò)的系統(tǒng)的有力集成的流行的語(yǔ)言特征,可允許惡意代碼本地地(例如,在客戶端上)執(zhí)行操作。檢測(cè)和預(yù)防機(jī)制可識(shí)別和停止惡意代碼使其無(wú)法經(jīng)由網(wǎng)絡(luò)發(fā)送請(qǐng)求或任何搜集的信息,進(jìn)而歸化攻擊且改善嵌入動(dòng)態(tài)語(yǔ)言代碼的應(yīng)用程序的安全性。
[0033]各種方面在編譯期間執(zhí)行靜態(tài)分析,其結(jié)果可用以產(chǎn)生和插入額外代碼,所述額外代碼在程序的執(zhí)行期間更新、修改和傳播附加到值(例如,JavaScript值)的標(biāo)簽(例如,JavaScript 標(biāo)簽)。
[0034]各種方面提供跟蹤系統(tǒng),其跟蹤來(lái)自軟件虛擬機(jī)內(nèi)的信息流。語(yǔ)言值(例如,JavaScript值)可初始用識(shí)別發(fā)源域的安全性標(biāo)簽來(lái)加標(biāo)簽。語(yǔ)言值可為代碼(例如,JavaScript代碼)的特定部分可產(chǎn)生和/或讀取的任何值。語(yǔ)言標(biāo)簽(例如,JavaScript標(biāo)簽)可使語(yǔ)言值(例如,JavaScript值)與識(shí)別特定代碼片的發(fā)源的域值(例如,WWW.google, com)關(guān)聯(lián)。
[0035]在一方面中,語(yǔ)言標(biāo)簽和語(yǔ)言值可在多個(gè)層級(jí)中編碼。多個(gè)層級(jí)的使用允許通過(guò)將標(biāo)簽分為兩個(gè)或兩個(gè)以上模式(例如,快速模式、慢速模式等等)而對(duì)語(yǔ)言值中的標(biāo)簽進(jìn)行編碼以用于信息流跟蹤,從而大大簡(jiǎn)化包含從其它腳本獲得的信息的語(yǔ)言值的識(shí)別。語(yǔ)言標(biāo)簽可隨后用以防止任何信息到與語(yǔ)言標(biāo)簽不一致的站點(diǎn)的發(fā)射,進(jìn)而防止使用實(shí)施簡(jiǎn)單的機(jī)制對(duì)信息的未經(jīng)授權(quán)的滲漏出。
[0036]圖1圖解說(shuō)明在無(wú)用戶知道或同意的情況下機(jī)密信息被從用戶惡意地收集且發(fā)送到外部服務(wù)器的實(shí)例系統(tǒng)中的組件和信息流100。如上文提到,客戶端應(yīng)用程序(例如,網(wǎng)絡(luò)瀏覽器)可拉動(dòng)并組合來(lái)自多個(gè)站點(diǎn)/服務(wù)器的代碼(例如,JavaScript腳本)。在圖1的圖解說(shuō)明的實(shí)例中,客戶端120從第一服務(wù)器/站點(diǎn)(WWW.good, com) 102和第二服務(wù)器/站點(diǎn)(WWW.attacker, com) 112兩者接收代碼。在框104中,源自第一服務(wù)器(例如,ffffff.good, com)的代碼可產(chǎn)生變量(例如,pin),其包含機(jī)密信息(例如,密碼、電子郵件地址等等)。如上文提到,動(dòng)態(tài)語(yǔ)言(例如,JavaScripli))允許多個(gè)腳本在同一執(zhí)行上下文中執(zhí)行,且每一代碼單元可修改其它代碼單元的變量和函數(shù)。因此,在框106中,來(lái)自第二服務(wù)器(例如,WWW.attcker.com)的代碼可讀取由第一服務(wù)器產(chǎn)生的變量(例如,pin)。在框108中,來(lái)自第二服務(wù)器(www.attcker.com)的代碼可將節(jié)點(diǎn)添加到DOM樹(shù),請(qǐng)求圖像(例
some image, jpg),且在框110中,致使客戶端120將滲漏出信息(例如,pin的值)作為有效負(fù)載發(fā)送到第二服務(wù)器。
[0037]此未經(jīng)授權(quán)的信息搜集可顯式地或隱式地發(fā)生。顯式信息流搜集在一個(gè)變量的值顯式地取決于另一變量的值(例如,在賦值語(yǔ)句中)時(shí)發(fā)生。隱式信息流搜集在攻擊者布置程序以使用未采用的控制路徑的知識(shí)來(lái)盜用數(shù)據(jù)時(shí)發(fā)生。
[0038]圖2圖解說(shuō)明實(shí)例JavaScript腳本202、204,其可用以使用隱式信息流攻擊來(lái)滲露出安全變量。在隱式信息流攻擊中,攻擊者可通過(guò)注入含有秘密值上的控制流分支的代碼202、204且觀察因此執(zhí)行的副作用(或無(wú)副作用)來(lái)邏輯上推斷系統(tǒng)內(nèi)的秘密變量的值。為了使此方法起作用,攻擊者必須具有對(duì)代碼將注入的系統(tǒng)的某種詳細(xì)知識(shí),這在多數(shù)基于網(wǎng)絡(luò)的系統(tǒng)上容易滿足,因?yàn)樵创a通常直接發(fā)運(yùn)給用戶。常見(jiàn)的安全性設(shè)計(jì)嘗試通過(guò)保障正在執(zhí)行的不同腳本之間的通信來(lái)防止此些攻擊,且因此試圖在發(fā)生之前阻止交叉站點(diǎn)腳本。
[0039]各種方面通過(guò)執(zhí)行惡意JavaScript且允許交叉站點(diǎn)腳本而脫離常見(jiàn)的安全性設(shè)計(jì),但防止搜集的信息被傳送。具體來(lái)說(shuō),攻擊的檢測(cè)和預(yù)防可被推遲到惡意代碼實(shí)際上嘗試經(jīng)由網(wǎng)絡(luò)發(fā)送搜集的信息時(shí),在此時(shí)檢測(cè)和預(yù)防機(jī)制防止請(qǐng)求被惡意代碼傳送(滲漏出)。
[0040]圖3圖解說(shuō)明用于跟蹤信息流且防止惡意代碼與遠(yuǎn)程服務(wù)器通信的一方面方法300。在框302中,在執(zhí)行之前,語(yǔ)言值(例如,JavaScript值)可初始用識(shí)別發(fā)源域的安全性標(biāo)簽來(lái)加標(biāo)簽。如上文論述,語(yǔ)言標(biāo)簽可為動(dòng)態(tài)語(yǔ)言代碼的特定部分可產(chǎn)生和/或讀取的任何值,且語(yǔ)言標(biāo)簽(例如,JavaScript標(biāo)簽)使語(yǔ)言值(例如,JavaScript值)與識(shí)別特定代碼片的發(fā)源的域值(例如,WWW.google, com)關(guān)聯(lián)。
[0041]在一方面中,語(yǔ)言標(biāo)簽和值可在多個(gè)層級(jí)中編碼。多個(gè)層級(jí)的使用允許例如通過(guò)將標(biāo)簽分為兩個(gè)或兩個(gè)以上模式(例如,快速模式和慢速模式)而對(duì)值中的標(biāo)簽進(jìn)行編碼以用于信息流跟蹤,且大大簡(jiǎn)化可包含從其它腳本獲得的信息的語(yǔ)言值的識(shí)別。
[0042]返回到圖3,在框304中,可在編譯時(shí)間執(zhí)行靜態(tài)分析,其可產(chǎn)生/發(fā)射對(duì)應(yīng)于安全性敏感操作(例如,賦值)的額外代碼。在一方面中,產(chǎn)生/發(fā)射的代碼可控制流分支和結(jié)合,且傳播用于每個(gè)語(yǔ)言值(例如,JavaScript值)的安全性標(biāo)記。在框306到310中,在運(yùn)行時(shí)間,虛擬機(jī)(例如,JavaScript虛擬機(jī))可執(zhí)行額外產(chǎn)生/發(fā)射的代碼,管理正應(yīng)用于每一值的標(biāo)簽,且跟蹤程序內(nèi)的信息流。在框312中,檢測(cè)和預(yù)防機(jī)制/過(guò)程可執(zhí)行操作以檢測(cè)傳送信息的嘗試,所述信息是從確實(shí)源自與傳送腳本相同的域的其它腳本獲得。在框314中,檢測(cè)和預(yù)防機(jī)制/過(guò)程可防止請(qǐng)求經(jīng)由網(wǎng)絡(luò)發(fā)送。在一方面中,對(duì)攻擊的檢測(cè)和預(yù)防可推遲直到惡意腳本嘗試經(jīng)由網(wǎng)絡(luò)發(fā)送搜集的信息。
[0043]圖4A到4B圖解說(shuō)明方面加標(biāo)簽機(jī)制/過(guò)程400、450,用于存儲(chǔ)語(yǔ)言值以使得容易識(shí)別嘗試傳送從交叉腳本操作獲得的信息的腳本。為了清楚,以下描述使用
為示范性動(dòng)態(tài)語(yǔ)言。然而應(yīng)了解,廣泛多種動(dòng)態(tài)語(yǔ)言落在本申請(qǐng)案的范圍內(nèi),且權(quán)利要求書(shū)的范圍不應(yīng)限于JavaScript?滁非權(quán)利要求書(shū)中明確地如此陳述。
[0044]大體上,每個(gè)語(yǔ)言值可經(jīng)存儲(chǔ)為m位值(例如,192位值),其在JavaScript引擎中我們稱(chēng)其為動(dòng)態(tài)值或簡(jiǎn)稱(chēng)為D值。在圖4A到4B的圖解說(shuō)明的實(shí)例中,將192位D值表示為24字節(jié)??纱鎯?chǔ)JavaScript值以使得最低η位(例如,字節(jié)O到I)存儲(chǔ)類(lèi)型值(串、雙等等),且下一 X位(例如,字節(jié)2到3、字節(jié)2到5)存儲(chǔ)有效地編碼JavaScript值的發(fā)源域標(biāo)簽信息的標(biāo)簽信息。以此方式,在每個(gè)JavaScript值中可編碼x(例如,32、64)數(shù)目個(gè)不同域,從而允許使用邏輯“或”運(yùn)算用于標(biāo)簽結(jié)合,其僅需要最小的運(yùn)行時(shí)間開(kāi)銷(xiāo)。
[0045]如上文提到,在一方面中,標(biāo)簽和值可在多個(gè)層級(jí)中編碼,使得X位中的某些對(duì)發(fā)源域標(biāo)簽信息進(jìn)行編碼,且使得X位中的某些存儲(chǔ)指向含有標(biāo)簽信息的位置的指針。在一方面中,可基于腳本的數(shù)目調(diào)整用以對(duì)發(fā)源域標(biāo)簽信息進(jìn)行編碼的X位的數(shù)目。在一方面中,可基于從先前執(zhí)行獲得的信息、用戶的瀏覽歷史、或基于在運(yùn)行時(shí)間收集的度量而調(diào)整用以對(duì)發(fā)源域標(biāo)簽信息進(jìn)行編碼的X位的數(shù)目。
[0046]返回到圖4A到4B,在方法400和450中,可存儲(chǔ)JavaScript值以使得D值結(jié)構(gòu)的y位(例如,字節(jié)4到11、字節(jié)6到13)存儲(chǔ)實(shí)際值,z位(例如,字節(jié)12到15、字節(jié)14到15)存儲(chǔ)對(duì)準(zhǔn)信息,且高位(例如,字節(jié)16到23)存儲(chǔ)對(duì)象指針。
[0047]圖5圖解說(shuō)明根據(jù)一方面的用于在解譯器(例如,JavaScript引擎)中傳播標(biāo)簽的實(shí)例方法500。在框502中,在執(zhí)行之前,嵌入的代碼單元(例如,JavaScript腳本)可在域寄存器中寄存其發(fā)源的域(例如,WWW.good, com)。在框504中,在所有所執(zhí)行程序上共享的執(zhí)行上下文中可將值(例如,12)指派于第一變量。在框506中,可為第一變量產(chǎn)生內(nèi)部表示。在框508中,可通過(guò)例如在較高四個(gè)位中存儲(chǔ)值(例如,12)的二進(jìn)制表示(1100),而將內(nèi)部表示更新為包含指派于第一變量的值(例如,12)。在框510中,也可將與域(例如,good, com)相關(guān)聯(lián)的標(biāo)簽(0000-0001)附加到第一變量。在框512中,可針對(duì)具有不同發(fā)源域(例如,WWW.attacker, com)的第二變量執(zhí)行框502到510的操作。在框514中,可使用邏輯“或”運(yùn)算計(jì)算將值識(shí)別為與一個(gè)以上域相關(guān)聯(lián)的標(biāo)記標(biāo)簽值。
[0048]圖6是圖解說(shuō)明根據(jù)方面方法500的用于在解譯器(例如,JavaScript引擎)中傳播標(biāo)簽時(shí)的域寄存器的值、執(zhí)行上下文和語(yǔ)言值的內(nèi)部表示的圖式。在執(zhí)行之前,每個(gè)代碼單元(例如,JavaScript腳本)可在域寄存器602中寄存其發(fā)源的域(例如,www.good.com、www.attacker, com),且可為例如變量a、b和c產(chǎn)生內(nèi)部表示604。在所有所執(zhí)行程序上可共享的共享執(zhí)行上下文604中可將值(例如,12)指派于變量“a”。隨后可通過(guò)在較高四個(gè)位中存儲(chǔ)值(例如,12)的二進(jìn)制表示(1100),而將內(nèi)部表示更新為包含指派于變量“a”的值(例如,12)。也可將與域(例如,www.good, com)相關(guān)聯(lián)的標(biāo)簽(0000-0001)附加到變量“a”。較低8位(0000-0101)可界定所指派值類(lèi)型(例如,整數(shù)、雙,等等)
[0049]在圖6的圖解說(shuō)明的實(shí)例中,用于變量“b”的內(nèi)部表示遵循與變量“a”相同的綱要。然而,變量“ C ”包含標(biāo)記標(biāo)簽值(0000-0011),其將值識(shí)別為與域WWW.good, com和www.attacker, com的標(biāo)簽相關(guān)聯(lián)。在一方面中,此信息可用以決定是否允許網(wǎng)絡(luò)請(qǐng)求發(fā)送信息。
[0050]在一方面中,可使用邏輯或運(yùn)算計(jì)算將值識(shí)別為與一個(gè)以上域相關(guān)聯(lián)的標(biāo)記標(biāo)簽值。在經(jīng)由網(wǎng)絡(luò)發(fā)送任何請(qǐng)求之前,各種方面可檢查是否允許將信息發(fā)送到所述域或者是否發(fā)生了安全性侵犯??杀容^所述值的標(biāo)簽,且所述比較的結(jié)果可用以決策是否將允許發(fā)送請(qǐng)求。
[0051]各種方面防止客戶端應(yīng)用程序泄露信息。傳播標(biāo)簽可導(dǎo)致標(biāo)簽蠕動(dòng)(標(biāo)簽爆發(fā)),其中用所有可能的標(biāo)簽對(duì)每個(gè)值加標(biāo)簽。在一方面中,執(zhí)行JavaScript?以使得標(biāo)簽蠕動(dòng)不發(fā)生和/或不影響性能。在一方面中,可忽略基于時(shí)序通道的信息泄露。
[0052]圖7圖解說(shuō)明用于使用有效地加標(biāo)簽的多級(jí)值來(lái)阻止受污染數(shù)據(jù)泄露到服務(wù)器或第三方的一方面方法700。如上文參見(jiàn)圖4A到4B所論述,X位(例如,字節(jié)2到3、字節(jié)2到5)可存儲(chǔ)有效地對(duì)語(yǔ)言值的發(fā)源域標(biāo)簽信息進(jìn)行編碼的標(biāo)簽信息。同樣如上文所論述,在各種方面中,標(biāo)簽和值可在多個(gè)層級(jí)中編碼。多個(gè)層級(jí)的使用允許通過(guò)將標(biāo)簽分為兩個(gè)或兩個(gè)以上模式(例如,快速模式、慢速模式等等)而對(duì)JavaScript值中的標(biāo)簽進(jìn)行編碼以用于信息流跟蹤,從而大大簡(jiǎn)化了對(duì)包含從其它腳本獲得的信息的語(yǔ)言值的識(shí)別。
[0053]參見(jiàn)圖7,在框702中,可在語(yǔ)言值中在兩個(gè)模式中編碼語(yǔ)言標(biāo)簽:快速模式,其在值自身中將所有標(biāo)簽編碼為獨(dú)熱位;以及慢速模式,其將標(biāo)簽編碼為對(duì)存儲(chǔ)在另一存儲(chǔ)器位置上的值的參考。在框704中,可保留一個(gè)位以表明是否將使用第一模式(例如,“快速模式”)或第二模式(例如,“慢速模式”)。舉例來(lái)說(shuō),在保留16位(例如,字節(jié)2到3)以用于存儲(chǔ)標(biāo)簽信息的配置(例如,圖4A)中,可保留第16位以表明是否將使用第一模式(例如,“快速模式”)或第二模式(例如,“慢速模式”)。在確定框706中,確定保留位是否指示選擇快速模式。如果確定選擇快速模式(即,確定框706 =“是”),那么在框708中,將位的其余部分識(shí)別為在值自身中編碼,且可使用簡(jiǎn)單的逐位或運(yùn)算來(lái)執(zhí)行識(shí)別操作。如果確定選擇慢速模式(即,確定框706 = “否”),那么在框710中,可將位的其余部分識(shí)別為使用用于管理標(biāo)簽的一股技術(shù)來(lái)編碼。舉例來(lái)說(shuō),在其中保留16位(例如,字節(jié)2到3)以用于存儲(chǔ)標(biāo)簽信息的配置(例如,圖4A)中,當(dāng)?shù)?6腳本存取來(lái)自另一腳本的值時(shí),不再存在任何空間存儲(chǔ)標(biāo)簽值(即,D值用完了為標(biāo)簽信息保留的位),且必須在慢速模式中編碼標(biāo)簽值以存儲(chǔ)可用作到存儲(chǔ)實(shí)際標(biāo)簽信息的標(biāo)簽管理器數(shù)據(jù)結(jié)構(gòu)中的鑰匙的索引。
[0054]在一方面中,標(biāo)簽管理器可經(jīng)配置以使得標(biāo)簽是到可與存儲(chǔ)較多標(biāo)簽信息所必要的情況一樣大的陣列中的索引。以此方式,可支持大量的腳本,同時(shí),針對(duì)不含有足夠大量的交叉?zhèn)魉湍_本(例如,在以上實(shí)例中15個(gè)腳本或更少)的每一 JavaScript值大大改善速度而在慢速模式中存儲(chǔ)值,從而允許使用簡(jiǎn)單的逐位或運(yùn)算來(lái)執(zhí)行識(shí)別操作。
[0055]各種方面脫離了常規(guī)安全性解決方案,常規(guī)安全性解決方案大體上聚焦于保障正在執(zhí)行的不同腳本之間的通信以停止交叉站點(diǎn)腳本。各種方面允許本地地執(zhí)行惡意JavaScript?,但防止惡意代碼向主機(jī)站點(diǎn)發(fā)送信息。各種方面還通過(guò)在多個(gè)層級(jí)中編碼JavaScript標(biāo)簽和值而脫離了現(xiàn)存的信息流跟蹤方法,從而允許將JavaScript標(biāo)簽編碼為JavaScript值自身中的獨(dú)熱位。這大大減少了復(fù)雜性,改善了效率,且允許在受約束的計(jì)算環(huán)境中實(shí)施各種方面,全都不影響用戶體驗(yàn)。各種方面平衡了操作復(fù)雜性、存儲(chǔ)容量和與存取時(shí)間相關(guān)聯(lián)的開(kāi)銷(xiāo)以大大改善總體性能。
[0056]所述方面可在多種計(jì)算裝置中的任一者上實(shí)施,例如移動(dòng)計(jì)算裝置,例如多功能蜂窩式電話和個(gè)人計(jì)算機(jī)。所述方面可尤其有助于可從性能節(jié)省獲益的具有相對(duì)有限處理能力和/或資源的計(jì)算裝置。
[0057]圖8中圖解說(shuō)明此計(jì)算裝置800的示范性非限制性方面的實(shí)例組件和模塊。計(jì)算裝置800可包含電子組件的電路板880,所述電子組件中的一些或全部可集成到芯片上系統(tǒng)中,所述電路板包含耦合到存儲(chǔ)器802的控制處理器801。控制處理器801可進(jìn)一步耦合到數(shù)字信號(hào)處理器811和/或模擬信號(hào)處理器821,所述兩個(gè)處理器也可耦合在一起。在一些方面中,控制處理器801和數(shù)字信號(hào)處理器811可為相同組件或可集成到同一處理器芯片中。顯示器控制器833和觸摸屏控制器843可耦合到控制處理器801且耦合到在計(jì)算裝置800內(nèi)或連接到計(jì)算裝置800的顯示器或觸摸屏顯示器803。
[0058]控制處理器801也可耦合到可裝卸式存儲(chǔ)器822 (例如,在移動(dòng)計(jì)算裝置的情況下SD存儲(chǔ)器或SIM卡)和/或外部存儲(chǔ)器804,例如磁盤(pán)驅(qū)動(dòng)器、CD驅(qū)動(dòng)器和DVD驅(qū)動(dòng)器中的一者或一者以上??刂铺幚砥?01還可耦合到通用串行總線(USB)控制器812,所述USB控制器耦合到USB端口 814。而且,電力供應(yīng)器870可通過(guò)USB控制器812或通過(guò)不同電連接耦合到電路板880以對(duì)各種電子組件提供電力(例如,DC電力)。
[0059]控制處理器801還可耦合到視頻編碼器834,例如,逐行倒相(PAL)編碼器、順序彩色與存儲(chǔ)(SECAM)編碼器,或國(guó)家電視系統(tǒng)委員會(huì)(NTSC)編碼器。此外,視頻編碼器834可耦合到視頻放大器836,所述視頻放大器可耦合到視頻編碼器834和顯示器或觸摸屏顯示器803。而且,視頻端口 838可耦合到視頻放大器836,以使得能夠?qū)⒂?jì)算裝置800連接到外部監(jiān)視器、電視機(jī)或其它顯示器(未圖示)。
[0060]在一些方面中,尤其是移動(dòng)計(jì)算裝置,控制處理器801可例如經(jīng)由模擬信號(hào)處理器821耦合到射頻(RF)收發(fā)器805。RF收發(fā)器805可耦合到用于發(fā)射和接收RF信號(hào)的RF天線804。RF收發(fā)器805可經(jīng)配置以發(fā)射和接收一個(gè)或一個(gè)以上不同無(wú)線通信協(xié)議的通信信號(hào),所述協(xié)議包含例如蜂窩式電話(例如,G-3、UMTS、CDMA等等)、WiF1、wiMax和藍(lán)牙。
[0061]控制處理器801可進(jìn)一步耦合到網(wǎng)絡(luò)卡806,所述網(wǎng)絡(luò)卡可耦合到網(wǎng)絡(luò)連接器816和/或RF收發(fā)器805且經(jīng)配置以實(shí)現(xiàn)經(jīng)由外部網(wǎng)絡(luò)(例如,局域網(wǎng)、因特網(wǎng)、內(nèi)部網(wǎng)、WiFi網(wǎng)絡(luò)、藍(lán)牙網(wǎng)絡(luò)、個(gè)域網(wǎng)(PAN)等等)的通信。網(wǎng)絡(luò)卡806可呈單獨(dú)芯片或卡的形式,或可作為整體解決方案通信芯片實(shí)施為控制處理器801或RF收發(fā)器805 (或兩者)的部分。
[0062]若干模擬裝置可經(jīng)由模擬信號(hào)處理器821耦合到控制處理器801,例如圖8中所示的小鍵盤(pán)808。在其它實(shí)施方案中,小鍵盤(pán)或鍵盤(pán)可包含其自己的處理器,使得與控制處理器801的接口可經(jīng)由直接連接(未圖示),經(jīng)由網(wǎng)絡(luò)連接(例如,經(jīng)由網(wǎng)絡(luò)卡),或經(jīng)由USB端口 814。
[0063]在一些實(shí)施方案中,數(shù)碼相機(jī)848可耦合到控制處理器801。在示范性方面中,數(shù)碼相機(jī)848可為電荷耦合裝置(CCD)相機(jī)或互補(bǔ)金屬氧化物半導(dǎo)體(CMOS)相機(jī)。數(shù)碼相機(jī)848可建立到計(jì)算裝置800中或通過(guò)外部電纜耦合到裝置。[0064]在一些實(shí)施方案中,音頻編解碼器850 (例如,立體聲編解碼器)可耦合到模擬信號(hào)處理器821且經(jīng)配置以經(jīng)由音頻放大器852將聲音信號(hào)發(fā)送到一個(gè)或一個(gè)以上揚(yáng)聲器854。音頻編解碼器850還可耦合到麥克風(fēng)放大器856,其可(例如,經(jīng)由麥克風(fēng)插孔)耦合到麥克風(fēng)858。頭戴受話器插孔859也可耦合到音頻編解碼器850以用于將音頻輸出到頭戴受話器。
[0065]在一些實(shí)施方案中,計(jì)算裝置800可包含單獨(dú)的RF接收器電路860,其可耦合到用于接收廣播無(wú)線通信信號(hào)的天線862。接收器電路860可經(jīng)配置以接收廣播電視信號(hào),且將所接收信號(hào)提供到DSP811用于處理。在一些實(shí)施方案中,接收器電路860可經(jīng)配置以接收FM無(wú)線電信號(hào),在此情況下可將所接收信號(hào)傳遞到音頻編解碼器850用于處理。
[0066]在一方面中,用于實(shí)現(xiàn)上述方法操作中的一者或一者以上的處理器可執(zhí)行指令可存儲(chǔ)在內(nèi)部存儲(chǔ)器802、可裝卸式存儲(chǔ)器822和/或非易失性存儲(chǔ)器804中(例如,硬驅(qū)動(dòng)器、CD驅(qū)動(dòng)器或經(jīng)由網(wǎng)絡(luò)可存取的其它存儲(chǔ)裝置上)。此些處理器可執(zhí)行指令可由控制處理器801執(zhí)行以便執(zhí)行本文描述的方法。
[0067]圖9中圖解說(shuō)明移動(dòng)計(jì)算裝置的實(shí)例,且圖10中圖解說(shuō)明筆記本計(jì)算機(jī)的實(shí)例。典型的移動(dòng)計(jì)算裝置900將共同地具有圖9中圖解說(shuō)明的組件。舉例來(lái)說(shuō),移動(dòng)計(jì)算裝置900可包含耦合到內(nèi)部存儲(chǔ)器902和觸摸表面輸入裝置/顯示器903的處理器901。觸摸屏顯示器903,例如電阻式感測(cè)觸摸屏、電容式感測(cè)觸摸屏、紅外線感測(cè)觸摸屏、聲學(xué)/壓電感測(cè)觸摸屏或類(lèi)似物。各種方面不限于任何特定類(lèi)型的觸摸屏顯示器903或觸摸板技術(shù)。另外,計(jì)算裝置900可具有用于發(fā)送和接收電磁輻射的天線904,其連接到無(wú)線數(shù)據(jù)鏈路和/或耦合到處理器901的蜂窩式電話收發(fā)器905。計(jì)算裝置900還可包含用于接收用戶輸入的物理按鈕908。
[0068]雖然各種方面可為移動(dòng)計(jì)算裝置提供顯著性能增強(qiáng),但其它形式的計(jì)算裝置,包含個(gè)人計(jì)算機(jī)和膝上型計(jì)算機(jī),也可得益于對(duì)動(dòng)態(tài)語(yǔ)言腳本的預(yù)先剖析。此些計(jì)算裝置通常包含圖10中圖解說(shuō)明的組件,其圖解說(shuō)明實(shí)例個(gè)人膝上型計(jì)算機(jī)1000。此個(gè)人計(jì)算機(jī)1000通常包含處理器1001,其耦合到易失性存儲(chǔ)器1002和大容量非易失性存儲(chǔ)器,例如磁盤(pán)驅(qū)動(dòng)器1003。計(jì)算機(jī)1000還可包含耦合到處理器1001的壓縮光盤(pán)(⑶)和/或DVD驅(qū)動(dòng)器1004。計(jì)算機(jī)裝置1000還可包含若干連接器端口,其耦合到處理器901以用于建立數(shù)據(jù)連接或接納外部存儲(chǔ)器裝置,例如用于將處理器901耦合到網(wǎng)絡(luò)的網(wǎng)絡(luò)連接電路1005。計(jì)算機(jī)1000可進(jìn)一步耦合到鍵盤(pán)1008、例如鼠標(biāo)1010等指向裝置,以及顯示器1009,如計(jì)算機(jī)領(lǐng)域中眾所周知。
[0069]處理器901、1001可為任何可編程微處理器、微計(jì)算機(jī)或多處理器芯片,其可由軟件指令(應(yīng)用程序)配置以執(zhí)行多種功能,包含本文描述的各種方面的功能。在一些移動(dòng)裝置中,可提供多個(gè)處理器901、1001,例如專(zhuān)用于無(wú)線通信功能的一個(gè)處理器和專(zhuān)用于運(yùn)行其它應(yīng)用程序的一個(gè)處理器。通常,軟件應(yīng)用程序在其經(jīng)存取且加載到處理器901、1001中之前可存儲(chǔ)在內(nèi)部存儲(chǔ)器902、1002中。在一些移動(dòng)裝置中,處理器901、1001可包含足以存儲(chǔ)應(yīng)用程序軟件指令的內(nèi)部存儲(chǔ)器。在一些移動(dòng)裝置中,安全存儲(chǔ)器可在耦合到處理器901、1001的單獨(dú)存儲(chǔ)器芯片中。內(nèi)部存儲(chǔ)器902、1002可為易失性或非易失性存儲(chǔ)器,例如快閃存儲(chǔ)器,或兩者的混合物。為了本描述的目的,對(duì)存儲(chǔ)器的一股參考指代可由處理器901、1001存取的所有存儲(chǔ)器,包含內(nèi)部存儲(chǔ)器902、1002、插入到移動(dòng)裝置中的可裝卸式存儲(chǔ)器,以及處理器901、1001自身內(nèi)的存儲(chǔ)器。
[0070]前述方法描述和過(guò)程流程圖僅作為說(shuō)明性實(shí)例而提供且既定不要求或不暗示必須以所呈現(xiàn)的次序執(zhí)行各種方面的框。如所屬領(lǐng)域的技術(shù)人員將了解,前述方面中的步驟次序可以任何次序執(zhí)行。例如“然后”、“隨后”、“接著”等詞語(yǔ)既定不限制框的次序,這些詞語(yǔ)僅用以引導(dǎo)讀者閱讀方法的描述。此外,例如使用冠詞“一”或“所述”以單數(shù)形式對(duì)權(quán)利要求元件的任何參考不應(yīng)解釋為將所述元件限于單數(shù)。
[0071]結(jié)合本文所揭示的方面描述的各種說(shuō)明性邏輯塊、模塊、電路和算法步驟可實(shí)施為電子硬件、計(jì)算機(jī)軟件或所述兩者的組合。為了清楚地說(shuō)明硬件與軟件的這種可交換性,上文已大體上在其功能性方面描述了各種說(shuō)明性組件、塊、模塊、電路和步驟。將此類(lèi)功能性實(shí)施為硬件還是軟件取決于特定應(yīng)用和對(duì)整個(gè)系統(tǒng)施加的設(shè)計(jì)約束。熟練的技術(shù)人員針對(duì)每一特定應(yīng)用可以不同方式實(shí)施所描述的功能性,但不應(yīng)將此類(lèi)實(shí)施方案決策解釋為造成與本發(fā)明的范圍的脫離。
[0072]結(jié)合本文所揭示的方面描述的用以實(shí)施各種說(shuō)明性邏輯、邏輯塊、模塊和電路的硬件可用經(jīng)設(shè)計(jì)以執(zhí)行本文描述的功能的通用處理器、數(shù)字信號(hào)處理器(DSP)、專(zhuān)用集成電路(ASIC)、現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)或其它可編程邏輯裝置、離散門(mén)或晶體管邏輯、離散硬件組件或其任何組合來(lái)實(shí)施或執(zhí)行。通用處理器可以是微處理器,但在替代方案中,所述處理器可以是任何常規(guī)處理器、控制器、微控制器或狀態(tài)機(jī)。處理器還可實(shí)施為計(jì)算裝置的組合,例如DSP與微處理器的組合、多個(gè)微處理器、結(jié)合DSP核心的一個(gè)或一個(gè)以上微處理器或任何其它此類(lèi)配置?;蛘撸恍┎襟E或方法可由特定針對(duì)給定功能的電路執(zhí)行。
[0073]在一個(gè)或一個(gè)以上示范性方面中,所描述的功能可以硬件、軟件、固件或其任一組合來(lái)實(shí)施。如果以軟件實(shí)施,那么功能可作為一個(gè)或一個(gè)以上指令或代碼存儲(chǔ)在非暫時(shí)性計(jì)算機(jī)可讀或處理器可讀存儲(chǔ)媒體上或經(jīng)由計(jì)算機(jī)可讀媒體傳輸。本文揭示的方法或算法的步驟可在處理器可執(zhí)行軟件模塊中體現(xiàn),所述模塊可駐留在非暫時(shí)性處理器可讀或計(jì)算機(jī)可讀存儲(chǔ)媒體上。非暫時(shí)性處理器可讀和計(jì)算機(jī)可讀媒體可為可由計(jì)算機(jī)或計(jì)算裝置的處理器存取的任何可用存儲(chǔ)媒體。舉例來(lái)說(shuō)且并非限制,此類(lèi)非暫時(shí)性處理器可讀或計(jì)算機(jī)可讀媒體可包括RAM、ROM、EEPROM、CD-ROM或其它光盤(pán)存儲(chǔ)裝置、磁盤(pán)存儲(chǔ)裝置或其它磁性存儲(chǔ)裝置、或可用來(lái)以指令或數(shù)據(jù)結(jié)構(gòu)的形式載運(yùn)或存儲(chǔ)所要程序代碼且可由計(jì)算機(jī)或計(jì)算裝置的處理器存取的任何其它媒體。如本文中所使用,磁盤(pán)及光盤(pán)包含壓縮光盤(pán)(CD)、激光光盤(pán)、光學(xué)光盤(pán)、數(shù)字多功能光盤(pán)(DVD)、軟磁盤(pán)及藍(lán)光光盤(pán),其中磁盤(pán)通常以磁性方式再生數(shù)據(jù),而光盤(pán)使用激光以光學(xué)方式再生數(shù)據(jù)。上文的組合也應(yīng)包含在非暫時(shí)性計(jì)算機(jī)可讀媒體的范圍內(nèi)。另外,方法或算法的操作可作為代碼和/或指令中的一者或任何組合或集合駐留在可并入到計(jì)算機(jī)程序產(chǎn)品中的非暫時(shí)性處理器可讀媒體和/或非暫時(shí)性計(jì)算機(jī)可讀媒體上。
[0074]提供對(duì)所揭示方面的先前描述是為了使得所屬領(lǐng)域的技術(shù)人員能夠制作或使用本發(fā)明。所屬領(lǐng)域的技術(shù)人員將容易了解對(duì)這些方面的各種修改,且在不脫離本發(fā)明精神或范圍的情況下,本文所界定的一股原理可適用于其它方面。因此,本發(fā)明既定不限于本文展示的方面,而是應(yīng)被賦予與所附權(quán)利要求書(shū)以及本文所揭示的原理和新穎特征一致的最廣范圍。
【權(quán)利要求】
1.一種用于對(duì)動(dòng)態(tài)語(yǔ)言值中的安全性標(biāo)簽進(jìn)行編碼的方法,其包括: 分配所述動(dòng)態(tài)語(yǔ)言值中的若干位以存儲(chǔ)經(jīng)編碼標(biāo)簽; 保留所述經(jīng)分配位中的一個(gè)位以表明安全性標(biāo)簽是否在第一模式或第二模式中編碼;以及 用識(shí)別發(fā)源域的安全性標(biāo)簽對(duì)所述動(dòng)態(tài)語(yǔ)言值加標(biāo)簽,所述安全性標(biāo)簽是在所述第一模式或所述第二模式中編碼。
2.根據(jù)權(quán)利要求1所述的方法,其進(jìn)一步包括: 確定所述所保留位是否指示所述第一模式或所述第二模式被選定; 在確定所述所保留位指示所述第一模式被選定的情況下將安全性標(biāo)簽識(shí)別為被編碼為獨(dú)熱位且執(zhí)行逐位或運(yùn)算;以及 在確定所述所保留位指示所述第二模式被選定的情況下將所述安全性標(biāo)簽識(shí)別為到存儲(chǔ)實(shí)際標(biāo)簽信息的標(biāo)簽管理器數(shù)據(jù)結(jié)構(gòu)中的參考且執(zhí)行存儲(chǔ)器讀取操作。
3.根據(jù)權(quán)利要求 1所述的方法,其中用識(shí)別發(fā)源域的安全性標(biāo)簽對(duì)所述動(dòng)態(tài)語(yǔ)言值加標(biāo)簽包括在從源自其它域的腳本存取信息的腳本的數(shù)目小于所分配位的數(shù)目的情況下在所述第一模式中編碼動(dòng)態(tài)語(yǔ)言標(biāo)簽。
4.根據(jù)權(quán)利要求1所述的方法,其中所述方法是使用選自由以下各項(xiàng)組成的群組的動(dòng)態(tài)或腳本語(yǔ)言來(lái)實(shí)施:Java?、JavaScript?、ActionScript?、DART⑩、PHP、Python?、Ruby、PERL、Scala、Erlang、Candle 和.NET 語(yǔ)言。
5.一種計(jì)算裝置,其包括: 用于分配動(dòng)態(tài)語(yǔ)言值中的若干位以存儲(chǔ)經(jīng)編碼標(biāo)簽的裝置; 用于保留所述經(jīng)分配位中的一個(gè)位以表明安全性標(biāo)簽是否在第一模式或第二模式中編碼的裝置;以及 用于用識(shí)別發(fā)源域的安全性標(biāo)簽對(duì)所述動(dòng)態(tài)語(yǔ)言值加標(biāo)簽的裝置,所述安全性標(biāo)簽是在所述第一模式或所述第二模式中編碼。
6.根據(jù)權(quán)利要求5所述的計(jì)算裝置,其進(jìn)一步包括: 用于確定所述所保留位是否指示所述第一模式或所述第二模式被選定的裝置; 用于在確定所述所保留位指示所述第一模式被選定的情況下將安全性標(biāo)簽識(shí)別為被編碼為獨(dú)熱位且執(zhí)行逐位或運(yùn)算的裝置;以及 用于在確定所述所保留位指示所述第二模式被選定的情況下將所述安全性標(biāo)簽識(shí)別為到存儲(chǔ)實(shí)際標(biāo)簽信息的標(biāo)簽管理器數(shù)據(jù)結(jié)構(gòu)中的參考且執(zhí)行存儲(chǔ)器讀取操作的裝置。
7.根據(jù)權(quán)利要求5所述的計(jì)算裝置,其中用于用識(shí)別發(fā)源域的安全性標(biāo)簽對(duì)所述動(dòng)態(tài)語(yǔ)言值加標(biāo)簽的裝置包括用于在從源自其它域的腳本存取信息的腳本的數(shù)目小于所分配位的數(shù)目的情況下在所述第一模式中編碼動(dòng)態(tài)語(yǔ)言標(biāo)簽的裝置。
8.根據(jù)權(quán)利要求5所述的計(jì)算裝置,其中用于分配動(dòng)態(tài)語(yǔ)言值中的若干位的裝置包括用于分配選自由以下各項(xiàng)組成的群組的語(yǔ)言中的若干位的裝置:Java?、JuvaScripi?, AclidiiScripl.?, DART?, PHP、Pylhmi?、Ruby、PERL、Scala、Erlang、Candle 和.NET 語(yǔ)言。
9.一種計(jì)算裝置,其包括:存儲(chǔ)器;以及 處理器,其耦合到所述存儲(chǔ)器,其中所述處理器以處理器可執(zhí)行指令配置以執(zhí)行用于對(duì)動(dòng)態(tài)語(yǔ)言值中的安全性標(biāo)簽進(jìn)行編碼的操作,所述操作包括: 分配所述動(dòng)態(tài)語(yǔ)言值中的若干位以存儲(chǔ)經(jīng)編碼標(biāo)簽; 保留所述經(jīng)分配位中的一個(gè)位以表明所述安全性標(biāo)簽是否在第一模式或第二模式中編碼;以及 用識(shí)別發(fā)源域的安全性標(biāo)簽對(duì)所述動(dòng)態(tài)語(yǔ)言值加標(biāo)簽,所述安全性標(biāo)簽是在所述第一模式或所述第二模式中編碼。
10.根據(jù)權(quán)利要求9所述的計(jì)算裝置,其中所述處理器以處理器可執(zhí)行指令配置以執(zhí)行 進(jìn)一步包括以下各項(xiàng)的操作: 確定所述所保留位是否指示所述第一模式或所述第二模式被選定; 在確定所述所保留位指示所述第一模式被選定的情況下將安全性標(biāo)簽識(shí)別為被編碼為獨(dú)熱位且執(zhí)行逐位或運(yùn)算;以及 在確定所述所保留位指示所述第二模式被選定的情況下將所述安全性標(biāo)簽識(shí)別為到存儲(chǔ)實(shí)際標(biāo)簽信息的標(biāo)簽管理器數(shù)據(jù)結(jié)構(gòu)中的參考且執(zhí)行存儲(chǔ)器讀取操作。
11.根據(jù)權(quán)利要求9所述的計(jì)算裝置,其中所述處理器以處理器可執(zhí)行指令配置以使得用識(shí)別發(fā)源域的安全性標(biāo)簽對(duì)所述動(dòng)態(tài)語(yǔ)言值加標(biāo)簽包括在從源自其它域的腳本存取信息的腳本的數(shù)目小于所分配位的數(shù)目的情況下在所述第一模式中編碼動(dòng)態(tài)語(yǔ)言標(biāo)簽。
12.根據(jù)權(quán)利要求9所述的計(jì)算裝置,其中所述處理器以處理器可執(zhí)行指令配置以使得分配所述動(dòng)態(tài)語(yǔ)言值中的若干位包括分配選自由以下各項(xiàng)組成的群組的語(yǔ)言中的若干位:JavaiK JavaScripte^ ActionScript?^ DART?、PHP、Python?、Ruby、PERL、Scala、Erlang、Candle 和.NET 語(yǔ)言。
13.一種其上存儲(chǔ)有處理器可執(zhí)行軟件指令的非暫時(shí)性計(jì)算機(jī)可讀存儲(chǔ)媒體,所述處理器可執(zhí)行軟件指令經(jīng)配置以致使處理器執(zhí)行用于對(duì)動(dòng)態(tài)語(yǔ)言值中的安全性標(biāo)簽進(jìn)行編碼的操作,所述操作包括: 分配所述動(dòng)態(tài)語(yǔ)言值中的若干位以存儲(chǔ)經(jīng)編碼標(biāo)簽; 保留所述經(jīng)分配位中的一個(gè)位以表明所述安全性標(biāo)簽是否在第一模式或第二模式中編碼;以及 用識(shí)別發(fā)源域的安全性標(biāo)簽對(duì)所述動(dòng)態(tài)語(yǔ)言值加標(biāo)簽,所述安全性標(biāo)簽是在所述第一模式或所述第二模式中編碼。
14.根據(jù)權(quán)利要求13所述的非暫時(shí)性計(jì)算機(jī)可讀存儲(chǔ)媒體,其中所述存儲(chǔ)的處理器可執(zhí)行軟件指令經(jīng)配置以致使處理器執(zhí)行進(jìn)一步包括以下各項(xiàng)的操作: 確定所述所保留位是否指示所述第一模式或所述第二模式被選定; 在確定所述所保留位指示所述第一模式被選定的情況下將安全性標(biāo)簽識(shí)別為經(jīng)編碼為獨(dú)熱位且執(zhí)行逐位或運(yùn)算;以及 在確定所述所保留位指示所述第二模式被選定的情況下將所述安全性標(biāo)簽識(shí)別為到存儲(chǔ)實(shí)際標(biāo)簽信息的標(biāo)簽管理器數(shù)據(jù)結(jié)構(gòu)中的參考且執(zhí)行存儲(chǔ)器讀取操作。
15.根據(jù)權(quán)利要求13所述的非暫時(shí)性計(jì)算機(jī)可讀存儲(chǔ)媒體,其中所述存儲(chǔ)的處理器可執(zhí)行軟件指令經(jīng)配置以致使處理器執(zhí)行操作以使得用識(shí)別發(fā)源域的安全性標(biāo)簽對(duì)所述動(dòng)態(tài)語(yǔ)言值加標(biāo)簽包括在從源自其它域的腳本存取信息的腳本的數(shù)目小于所分配位的數(shù)目的情況下在所述第一模式中編碼動(dòng)態(tài)語(yǔ)言標(biāo)簽。
16.根據(jù)權(quán)利要求13所述的非暫時(shí)性計(jì)算機(jī)可讀存儲(chǔ)媒體,其中所述存儲(chǔ)的處理器可執(zhí)行軟件指令經(jīng)配置以致使處理器執(zhí)行操作以使得分配所述動(dòng)態(tài)語(yǔ)言值中的若干位包括分配選自由以下各項(xiàng)組成的群組的語(yǔ)言中的若干位:Java?、JavaScript?,AclionScript?、DART?、PHP, Python? , Ruby, PERL、Scala、Erlang、Candle 和.NET語(yǔ)言。
【文檔編號(hào)】G06F21/53GK103975336SQ201280054410
【公開(kāi)日】2014年8月6日 申請(qǐng)日期:2012年9月28日 優(yōu)先權(quán)日:2011年11月7日
【發(fā)明者】克里斯托夫·克施鮑默, 穆罕默德·H·雷夏迪 申請(qǐng)人:高通股份有限公司