相關(guān)申請的交叉引用
本申請要求于2014年9月15日提交的美國臨時申請第62/050,449號的權(quán)益,其全部內(nèi)容通過引用并入本文。
背景技術(shù):
本發(fā)明一般涉及驗證在客戶端設(shè)備上執(zhí)行的應(yīng)用的安全,并且更具體地涉及當通過網(wǎng)絡(luò)訪問在應(yīng)用服務(wù)器處的遠程服務(wù)時驗證應(yīng)用。
應(yīng)用服務(wù)器向客戶端設(shè)備和在客戶端設(shè)備上執(zhí)行的應(yīng)用提供各種內(nèi)容和服務(wù)。這些應(yīng)用在本文中被稱為用戶代理或用戶代理應(yīng)用。如本文中所使用的,用戶代理是代表用戶動作的軟件代理,諸如瀏覽器或本地應(yīng)用。作為超文本傳輸協(xié)議(http)的一部分,用戶代理通常將發(fā)送用戶代理http請求以從另一系統(tǒng)請求內(nèi)容。該請求通常提供描述用戶代理的特征的附加數(shù)據(jù),諸如提供請求的用戶代理的身份、用戶代理正在執(zhí)行的平臺(例如,客戶端設(shè)備的操作系統(tǒng)或特定類型)和用戶代理應(yīng)用的能力(例如,用戶代理能夠解譯什么語言、或什么輸入設(shè)備或輸出設(shè)備可用于應(yīng)用)。這有助于服務(wù)器標識用戶代理,并且可以讓服務(wù)器優(yōu)化對該用戶代理的響應(yīng)。描述用戶代理的該數(shù)據(jù)可以包括在請求中,并且可以是http請求報頭的一部分。
應(yīng)用服務(wù)器可以提供html或其他網(wǎng)頁以供由在客戶端設(shè)備上執(zhí)行的用戶代理(即,網(wǎng)絡(luò)瀏覽器)的解譯。這些網(wǎng)頁可以提供從安全性和真實性的一些驗證中受益的多種類型的服務(wù),諸如銀行業(yè)務(wù)、購物、廣告等。從應(yīng)用服務(wù)器的角度看,應(yīng)用安全的風險包括跨站點腳本執(zhí)行、病毒、惡意軟件和自動機器人。一般而言,攻擊可能阻止用戶正確觀看由應(yīng)用服務(wù)器提供的內(nèi)容,或者向應(yīng)用服務(wù)器請求或提供未授權(quán)的信息。在廣告上下文中,自動系統(tǒng)(例如,機器人)對內(nèi)容或廣告的請求可以觸發(fā)實際用戶從未觀看過的廣告的呈現(xiàn),錯誤地觸發(fā)廣告商對投放的支付。
該應(yīng)用描述了應(yīng)用服務(wù)器或web服務(wù)對各種攻擊和安全威脅(諸如,來自潛在惡意的用戶代理)的保護,以及保護其客戶的用戶代理免受如跨站點腳本執(zhí)行(xss)或中間人攻擊(mitm)之類的各種攻擊。
技術(shù)實現(xiàn)要素:
客戶端設(shè)備上的用戶代理應(yīng)用訪問應(yīng)用服務(wù)器處的服務(wù)。當用戶代理應(yīng)用訪問服務(wù)并且向客戶端設(shè)備的用戶提供服務(wù)時,用戶代理應(yīng)用向安全驗證系統(tǒng)請求安全測試集合。在一個實施例中,應(yīng)用服務(wù)器向用戶代理應(yīng)用提供指令以訪問來自安全驗證系統(tǒng)的安全測試。該指令可以是指示用戶代理(例如,經(jīng)由引導程序代碼)訪問安全驗證系統(tǒng)的腳本。用戶代理訪問安全驗證系統(tǒng),并且提供用戶代理的標識和用戶代理的特征。用戶代理還可以提供應(yīng)用服務(wù)器的標識或由應(yīng)用服務(wù)器提供的應(yīng)用事務(wù)標識符。安全驗證系統(tǒng)從安全測試請求中標識用戶代理的特征,并且標識用戶代理執(zhí)行的安全測試集合。
該安全測試集合通過用戶代理應(yīng)用執(zhí)行,并且測試結(jié)果被發(fā)送到安全驗證系統(tǒng)。安全測試可以通過由用戶代理應(yīng)用執(zhí)行的腳本或其他安全模塊被執(zhí)行。安全測試評估用戶代理應(yīng)用的各個方面,并且可以確認用戶代理是當它請求安全測試時所聲稱的用戶代理,確認用戶代理應(yīng)用正在以預期方式顯示并且解譯來自應(yīng)用服務(wù)器的服務(wù),確認用戶代理應(yīng)用實際上正在由用戶操作等。為了評估用戶代理應(yīng)用,這些安全測試可以評估用戶與用戶代理應(yīng)用的交互,標識用戶代理應(yīng)用對從應(yīng)用服務(wù)器訪問的服務(wù)的顯示,標識用戶代理應(yīng)用與應(yīng)用服務(wù)器的交互,以及標識用戶代理應(yīng)用的執(zhí)行環(huán)境的能力和特征。因此,這些測試可以在用戶代理應(yīng)用訪問應(yīng)用服務(wù)器期間評估用戶代理應(yīng)用。
使用測試結(jié)果,安全驗證系統(tǒng)比較測試結(jié)果與針對用戶代理的預期測試結(jié)果。對比較進行評分,生成針對用戶代理的安全令牌并且將安全令牌提供給用戶代理應(yīng)用。令牌本身的存在可以提供對用戶代理的驗證,而在其他實施例中,令牌可以指定對用戶代理或所得到的安全得分執(zhí)行的特定測試。安全令牌由用戶代理應(yīng)用提供給應(yīng)用服務(wù)器以用于驗證,并且應(yīng)用服務(wù)器可以基于令牌來準許或拒絕對應(yīng)用服務(wù)器的進一步訪問或者在應(yīng)用服務(wù)器處執(zhí)行動作。在一個實施例中,安全驗證系統(tǒng)不是向客戶端設(shè)備提供安全令牌或者除了向客戶端設(shè)備提供安全令牌之外,而是將安全測試數(shù)據(jù)或得分或其聚合從多個客戶端設(shè)備提供給應(yīng)用服務(wù)器,以驗證訪問應(yīng)用服務(wù)器的用戶代理應(yīng)用。在該實施例中,應(yīng)用服務(wù)器可以為了其他目的而使用該信息來評估用戶訪問,而不是使用安全測試結(jié)果或安全得分來確定是否授予對應(yīng)用服務(wù)器的訪問。例如,提供廣告的應(yīng)用服務(wù)器可以使用指示非用戶(例如,機器人)的訪問的測試結(jié)果或得分來確定廣告商何時不支付廣告的投放或點擊,或者決定為可疑用戶顯示不同的內(nèi)容(通常是更便宜的廣告),或?qū)⒂脩粢龑У搅硪黄渌军c或內(nèi)容。
當用戶代理應(yīng)用不提供與預期結(jié)果完全一致的安全測試結(jié)果時,安全驗證系統(tǒng)可以向客戶端設(shè)備提供附加的安全測試以供執(zhí)行,并且可以向用戶提供顯示可能的安全隱患的通知,這取決于提供未預期結(jié)果的具體測試。
在客戶端設(shè)備處,執(zhí)行安全測試的安全模塊可以向客戶端設(shè)備提供附加的功能。首先,安全模塊可以監(jiān)測用戶代理的動作,并且阻止已知與弱點相關(guān)聯(lián)的動作,諸如訪問與惡意活動相關(guān)聯(lián)的網(wǎng)絡(luò)上的另一系統(tǒng)。其次,安全模塊可以將令牌插入到與應(yīng)用服務(wù)器的通信中,以將令牌提供給應(yīng)用服務(wù)器并且驗證應(yīng)用服務(wù)器的安全測試。最后,安全模塊可以監(jiān)測由用戶代理應(yīng)用執(zhí)行的動作并且向安全驗證系統(tǒng)報告動作。安全驗證系統(tǒng)可以重新評分用戶代理,并且基于該動作修改或撤銷安全令牌。
結(jié)果,用戶設(shè)備的安全可以通過分析在用戶代理應(yīng)用訪問應(yīng)用服務(wù)器時的操作的安全驗證系統(tǒng)而被驗證。因為安全驗證系統(tǒng)要求進行安全測試,所以當用戶代理標識和特征隨時間而改變時,安全驗證系統(tǒng)可以向用戶代理提供最新的測試并且更新這些測試。通過提供要由用戶代理執(zhí)行的安全模塊,安全模塊可以阻止附加的篡改,并且確保由安全驗證系統(tǒng)提供的令牌被提供給應(yīng)用服務(wù)器。
當沒有向應(yīng)用服務(wù)器提供令牌時,應(yīng)用服務(wù)器可以拒絕對其資源的訪問,其強制使用由用戶代理執(zhí)行的安全模塊。
附圖說明
圖1圖示了根據(jù)一個實施例的經(jīng)由網(wǎng)絡(luò)訪問的應(yīng)用服務(wù)器生態(tài)系統(tǒng)。
圖2圖示了一個實施例中的客戶端設(shè)備和安全驗證系統(tǒng)的部件。
圖3示出了根據(jù)一個實施例的客戶端安全模塊202的部件。
圖4示出了根據(jù)一個實施例的包括安全加載器的網(wǎng)頁。
圖5示出了根據(jù)一個實施例的在應(yīng)用服務(wù)器、客戶端設(shè)備和安全驗證系統(tǒng)之間的交互圖。
圖6示出了應(yīng)用服務(wù)器直接從安全驗證系統(tǒng)接收安全得分或測試驗證信息的環(huán)境。
僅出于說明的目的,附圖描繪了本發(fā)明的各種實施例。本領(lǐng)域技術(shù)人員將從以下討論中容易地認識到,在不背離本文所描述的本發(fā)明的原理的情況下,可以采用本文所說明的結(jié)構(gòu)和方法的備選實施例。
具體實施方式
圖1圖示了根據(jù)一個實施例的經(jīng)由網(wǎng)絡(luò)訪問的應(yīng)用服務(wù)器生態(tài)系統(tǒng)。
在這種環(huán)境中,客戶端設(shè)備100執(zhí)行從一個或多個應(yīng)用服務(wù)器116請求應(yīng)用服務(wù)的用戶代理應(yīng)用。當客戶端設(shè)備訪問來自應(yīng)用服務(wù)器116的資源時,在客戶端設(shè)備100上執(zhí)行的用戶代理應(yīng)用從安全驗證系統(tǒng)120接收安全模塊,并且執(zhí)行由安全驗證系統(tǒng)120指定的一系列測試。通常,這些測試可以描述當使用如由在客戶端設(shè)備上執(zhí)行的用戶代理應(yīng)用解譯的資源時客戶端設(shè)備的操作環(huán)境。例如,由應(yīng)用服務(wù)器116提供的資源可以包括具有超文本和各種腳本的網(wǎng)頁,以供客戶端設(shè)備100執(zhí)行。作為示例,由安全驗證系統(tǒng)120指定的測試在為用戶渲染網(wǎng)頁和腳本時標識應(yīng)用的特征。如下文進一步描述的,安全驗證系統(tǒng)120驗證這些測試的結(jié)果,并且確定應(yīng)用資源呈現(xiàn)給用戶的真實性,以及驗證用戶的應(yīng)用是否按預期操作。
指示客戶端環(huán)境(左上方)的客戶端設(shè)備100的應(yīng)用瀏覽器是安裝有訪問應(yīng)用服務(wù)器116的用戶代理應(yīng)用的計算設(shè)備。這可以是web瀏覽器或在客戶端設(shè)備100上執(zhí)行的其他類型的本地應(yīng)用。
在該示例中,當客戶端設(shè)備訪問應(yīng)用服務(wù)器時,它在由url標識的頁面處標識針對特定內(nèi)容的url。在web瀏覽器應(yīng)用中,這觸發(fā)由瀏覽器應(yīng)用通過諸如因特網(wǎng)之類的網(wǎng)絡(luò)向應(yīng)用服務(wù)器116發(fā)送的http請求。該http請求可以被加密,這種https連接(超文本傳輸協(xié)議安全)通過安全套接字層(ssl)或傳輸層安全(tls)對http進行分層。
在該示例應(yīng)用服務(wù)器生態(tài)系統(tǒng)110中,一個或多個應(yīng)用服務(wù)器116向客戶端設(shè)備100提供所請求的資源。在該示例中,服務(wù)器側(cè)資源被圖示為應(yīng)用服務(wù)器生態(tài)系統(tǒng)110的一部分。在該示例中,經(jīng)由應(yīng)用傳遞控制器114在內(nèi)容傳送網(wǎng)絡(luò)112處訪問應(yīng)用服務(wù)器116。通常,應(yīng)用服務(wù)器116處于(物理或虛擬的)數(shù)據(jù)中心中,不僅具有web服務(wù)器,而且還具有數(shù)據(jù)庫服務(wù)器以及應(yīng)用服務(wù)器116訪問以提供服務(wù)的附加服務(wù)。
在該示例中,web服務(wù)器的前端是應(yīng)用傳遞控制器114,其是通常駐留在數(shù)據(jù)中心中的設(shè)備,該設(shè)備前端處理web服務(wù)器。應(yīng)用傳遞控制器114提供負載平衡服務(wù)、安全、高速緩存和其他服務(wù),以管理應(yīng)用資源的一致傳遞。
可以有一個或多個應(yīng)用傳遞控制器114以提供高可用性和可擴展性的原因。應(yīng)用傳遞控制器114服務(wù)器還可以是虛擬服務(wù)器,例如,當應(yīng)用被托管在云提供商(比如,基礎(chǔ)設(shè)施即服務(wù)(iaas)提供商)時。
在該示例中,應(yīng)用服務(wù)器生態(tài)系統(tǒng)110還包括內(nèi)容控制網(wǎng)絡(luò)112。當客戶端設(shè)備100請求對應(yīng)用服務(wù)器116的訪問時,客戶端設(shè)備100接收最優(yōu)cdn服務(wù)器的地址(通常,接近用戶),并且要么通過返回原始服務(wù)器(adc和web服務(wù)器)要么在內(nèi)容被高速緩存在cdn服務(wù)器處的情況下直接從高速緩存提供服務(wù),該服務(wù)器向用戶提供網(wǎng)頁服務(wù)或應(yīng)用服務(wù)。
應(yīng)用服務(wù)器116可以駐留在多個數(shù)據(jù)中心和虛擬數(shù)據(jù)中心中,使用幾個應(yīng)用數(shù)據(jù)控制器或不使用應(yīng)用數(shù)據(jù)控制器,使用諸如iaas、paas(平臺即服務(wù))或saas(軟件即服務(wù))之類的云服務(wù),并且還可以利用多個內(nèi)容傳遞網(wǎng)絡(luò),或根本不使用cdn服務(wù)。
圖2圖示了環(huán)境中的客戶端設(shè)備100和安全驗證系統(tǒng)120的部件。在這種環(huán)境中,示出了單個應(yīng)用服務(wù)器116,但是可以通過應(yīng)用服務(wù)器生態(tài)系統(tǒng)110中所示的實體中的任一實體執(zhí)行安全實施模塊220,該應(yīng)用服務(wù)器生態(tài)系統(tǒng)110包括在多個這樣的實體上被執(zhí)行該安全實施模塊的實施例。
應(yīng)用服務(wù)器116提供向用戶提供內(nèi)容和服務(wù)請求的應(yīng)用服務(wù)模塊210。在該示例中,應(yīng)用服務(wù)器116還包括安全實施模塊220。安全實施模塊220在應(yīng)用服務(wù)器116(或在與應(yīng)用服務(wù)器生態(tài)系統(tǒng)110相關(guān)聯(lián)的另一系統(tǒng)處)處實施安全策略。例如,該安全策略可以僅對來自特定集ip地址的請求允許訪問特定頁面,或者與請求一起提供的請求某個進一步驗證(諸如訪問令牌),或者使用令牌來限制訪問、日志訪問或者基于令牌值顯示不同的選項。
因此,作為策略實施執(zhí)行的一部分,安全實施模塊220驗證諸如由安全驗證系統(tǒng)120發(fā)布的安全令牌之類的安全令牌。不同實現(xiàn)方式之間的令牌驗證可能不同,諸如,一個內(nèi)容傳遞網(wǎng)絡(luò)提供商可以以與另一內(nèi)容傳遞網(wǎng)絡(luò)不同的方式來實現(xiàn)令牌機制和令牌驗證,并且各自可以以與特定應(yīng)用傳遞控制器實現(xiàn)策略的方式不同的方式進行。一般而言,如下文進一步描述的,可以驗證每個令牌以驗證其安全(加密強度)、真實性(由安全驗證系統(tǒng)120發(fā)布的),并且被核準用于應(yīng)用服務(wù)器116的特定內(nèi)容。
令牌驗證驗證令牌與請求一起被提供,驗證令牌對于所請求的特定url是有效的,請求在令牌中指示的時間幀內(nèi)(如果指示),所請求的url(包括參數(shù),如果有的話)匹配提供令牌的url模式。附加的條件可能包括地理限制、用戶限制等。通常對令牌進行密碼簽名,使得安全驗證系統(tǒng)的安全實施模塊220可以驗證令牌是有效的并且由安全驗證系統(tǒng)120正確地簽名,而未經(jīng)授權(quán)的實體難以在其自身上生成有效的令牌。
因此,安全實施模塊220從安全驗證系統(tǒng)接收由客戶端設(shè)備提供的令牌,并且確定是否準許對應(yīng)用服務(wù)器116的訪問或執(zhí)行動作。如下文所指出的,當用戶代理應(yīng)用200不提供該令牌時,可以拒絕用戶代理應(yīng)用訪問所請求的服務(wù),或者可以提供安全加載器以引導用戶代理應(yīng)用200取回客戶端安全模塊202,以執(zhí)行從安全驗證系統(tǒng)120取回令牌的適當測試。在一些配置中,應(yīng)用服務(wù)器116分析令牌中包括的安全得分或測試結(jié)果,以確定是否授予所請求的訪問。例如,得分可能需要高于準許訪問的某個閾值,或者可能拒絕不能通過特定測試的用戶代理應(yīng)用的訪問。
客戶端設(shè)備100提供由客戶端設(shè)備100執(zhí)行并且由用戶操作以訪問應(yīng)用服務(wù)器116處的所請求的服務(wù)的用戶代理應(yīng)用200。用戶代理應(yīng)用200的操作通過安全驗證系統(tǒng)120被分析以確定用戶代理應(yīng)用200是否按預期操作。客戶端安全模塊202在用戶代理應(yīng)用內(nèi)執(zhí)行,并且根據(jù)安全驗證系統(tǒng)120所指定的測試來分析用戶代理應(yīng)用的操作。在某些情況下,應(yīng)用服務(wù)器116提供用作引導加載器的安全加載器以取回和發(fā)起客戶端上的客戶端安全模塊202。比如,當客戶端是瀏覽器時,安全加載器可以是具有與安全驗證系統(tǒng)120聯(lián)系并且請求客戶端安全模塊202以及在用戶代理應(yīng)用處加載它的基本邏輯的javascript“標簽”(短javascript代碼)。因此,當用戶代理應(yīng)用200是web瀏覽器,并且可以基于javascript代碼或來自應(yīng)用服務(wù)器116的其他指令來加載客戶端安全模塊202。在其他實施例中,用戶代理應(yīng)用200可以是本地應(yīng)用,諸如移動設(shè)備的應(yīng)用。在這種情況下,安全加載器可以被添加到應(yīng)用并且被包括作為軟件開發(fā)者工具包的一部分,而不是從應(yīng)用服務(wù)器116中被取回。在另一實施例中,客戶端安全模塊202可以是本地應(yīng)用的一部分,并且能夠按照安全驗證系統(tǒng)120所指示那樣來執(zhí)行安全測試,而不是從安全驗證系統(tǒng)120中取回安全模塊202。
當用戶代理應(yīng)用200訪問安全驗證系統(tǒng)120時,用戶代理應(yīng)用200提供關(guān)于用戶代理應(yīng)用200的信息。例如,用戶代理應(yīng)用200可以提供客戶端設(shè)備的特定模型和類型、客戶端設(shè)備的操作系統(tǒng)和操作系統(tǒng)版本、用戶代理應(yīng)用的身份和版本、以及用戶代理應(yīng)用的特定能力,諸如執(zhí)行某些腳本技術(shù)的能力??梢岳缭趆ttp請求報頭中提供該信息。用戶代理從安全驗證系統(tǒng)120中接收要執(zhí)行的測試集合。安全驗證系統(tǒng)120可以提供被配置成執(zhí)行所要求的測試的客戶端安全模塊202,或者客戶端安全模塊202可能已經(jīng)存在于客戶端設(shè)備100處并且執(zhí)行由安全驗證系統(tǒng)120請求的測試。由安全驗證系統(tǒng)120提供的安全測試可以基于用戶代理應(yīng)用和請求中描述的用戶代理應(yīng)用的特征而不同。因此,測試可以提供信息以確定在客戶端設(shè)備處執(zhí)行的測試與預期用戶代理應(yīng)用行為是否一致。
客戶端安全模塊202掛接到用戶代理應(yīng)用200執(zhí)行中,并且可以訪問各種功能以及評估用戶代理應(yīng)用200的狀態(tài)。例如,在瀏覽器應(yīng)用中,客戶端安全模塊202可以訪問諸如javascript引擎之類的瀏覽器功能、與頁面相關(guān)聯(lián)的核心對象(諸如html元素、document.cookie等)。然后,客戶端安全模塊202基于由安全驗證系統(tǒng)120提供的測試開始對應(yīng)用的狀態(tài)進行剖析。例如,它可以開始標識來自用戶代理應(yīng)用200的出站鏈接、用戶輸入行為、頁面上的html、javascript(js)和級聯(lián)樣式表(css)元素的數(shù)目、頁面的不同的文檔對象模型(dom)元素、表單和其他方面。
這些測試可以包括:確定用戶代理的各種javascript能力或其他腳本能力,例如,以驗證該javascript代碼在用戶代理應(yīng)用中執(zhí)行。附加的測試可能特定于所報告的用戶代理,例如,嘗試訪問本地存儲或特定對象以及特定于所報告的用戶代理的元素。
測試還可以包括:評估關(guān)于用戶代理及其活動的信息,諸如標識并檢查由用戶代理維護的特定cookie。
測試還可以跟蹤用戶活動,諸如鼠標移動、懸停在頁面中的特定元素上的鼠標光標、點擊活動、不同用戶活動的時間特征等。
測試還可以評估用戶代理應(yīng)用的活動的歷史,諸如訪問特定對象的定時可以指示對象是否已經(jīng)在高速緩存中(指示它過去已經(jīng)被用戶代理請求)或者用戶代理應(yīng)用是否通過網(wǎng)絡(luò)取回對象。另一測試是評估瀏覽器對象,如歷史對象。
因此,客戶端安全模塊202運行如由安全驗證系統(tǒng)確定的測試集合以收集數(shù)據(jù)并且剖析客戶端。這些測試將基于客戶端(瀏覽器類型、操作系統(tǒng)(os)、兩者的版本)、基于客戶端從應(yīng)用服務(wù)器116請求的特定活動(例如,觀看主頁、搜索目錄或執(zhí)行某個事務(wù))、以及基于該客戶端的已知歷史(如果用戶代理在過去被驗證)而不同。
在一個實施例中,所收集的數(shù)據(jù)被匿名化,以使其可以被傳送并且存儲,而不會違反終端用戶的隱私。例如,不會收集個人信息,諸如單獨鍵入的鍵,同時可以使用用戶的活動和模式以及環(huán)境的指紋(瀏覽器、os等)。
由客戶端安全模塊202收集的各種測試結(jié)果被提供給安全驗證系統(tǒng)120以剖析特定客戶端和當前活動或交互。因此,被收集的特定數(shù)據(jù)的組合可以指示用戶代理應(yīng)用200是否實際上表現(xiàn)為在其請求驗證中所陳述的用戶代理應(yīng)用,或者動作是否不類似于訪問該應(yīng)用服務(wù)器116的其他類似的用戶代理應(yīng)用。
安全驗證系統(tǒng)120包括用于提供安全測試并且分析客戶端設(shè)備的所得到的測試的各種模塊和數(shù)據(jù)存儲裝置。安全驗證系統(tǒng)120可以通過多個位置中的、用于各種模塊等的多個服務(wù)器來實現(xiàn)。服務(wù)本身可以包括內(nèi)容傳遞網(wǎng)絡(luò)、應(yīng)用傳遞控制器和其他服務(wù)或服務(wù)器。
安全模塊存儲裝置240維護用于各種用戶代理應(yīng)用200的客戶端安全模塊202的存儲庫以及要由客戶端安全模塊202執(zhí)行的各種測試的存儲庫。安全模塊存儲器240存儲多個客戶端安全模塊202,使得每個用戶代理應(yīng)用可以基于用戶代理應(yīng)用的特征來獲得最優(yōu)客戶端安全模塊202。諸如,安全模塊存儲裝置240可以包括用于特定用戶代理應(yīng)用的特定版本的特定客戶端安全模塊202、以及用于該用戶代理應(yīng)用的另一版本的另一客戶端安全模塊202以及用于不同的用戶代理應(yīng)用的第三客戶端安全模塊202。
當安全驗證系統(tǒng)120從客戶端設(shè)備100接收到可能來自javascript標簽中的安全加載器的安全驗證時,由安全請求模塊230接收該請求。安全請求模塊230作為前端操作以與安全驗證系統(tǒng)120的部件協(xié)調(diào)請求。當接收到安全驗證請求時,它被傳送到安全選擇模塊232,該安全選擇模塊232選擇客戶端安全模塊202和在請求中指定的用戶代理應(yīng)用特征的適當安全測試。該信息可以包括哪個應(yīng)用服務(wù)器116或url發(fā)起安全請求、用戶代理應(yīng)用類型和版本(例如,基于用戶代理http請求報頭、或來自由安全加載器報告的附加信息)。
當客戶端安全模塊202向安全驗證系統(tǒng)120報告數(shù)據(jù)時,關(guān)于測試結(jié)果的所報告的數(shù)據(jù)被處理、被充實、然后由測試結(jié)果更新模塊234存儲在測試結(jié)果存儲裝置242中。為了充實這些測試結(jié)果,客戶端安全模塊202可以向測試結(jié)果添加附加信息,諸如用戶代理的ip地址、與該ip地址相關(guān)聯(lián)的地理位置、與ip地址相關(guān)聯(lián)的特定服務(wù)、以及可以從訪問安全驗證系統(tǒng)120中得到的其他信息。使用所存儲的數(shù)據(jù),可以確定用于各個用戶代理應(yīng)用的簡檔,以用于訪問特定應(yīng)用服務(wù)器116或應(yīng)用服務(wù)器116處的各個資源。這些簡檔可以使用機器學習技術(shù)來生成以確定正常行為。這生成用戶代理應(yīng)用和用戶測試結(jié)果的基準。測試結(jié)果更新模塊234控制存儲、更新和分析數(shù)據(jù)以確定用戶代理的基準行為和屬性以及用戶行為的預期模式的過程。
在存儲針對給定訪問從客戶端安全模塊202收集的數(shù)據(jù)之后,通過測試驗證模塊236分析該數(shù)據(jù),該測試驗證模塊236比較數(shù)據(jù)與在簡檔存儲裝置中迄今收集和分析的數(shù)據(jù)。如果所接收到的測試結(jié)果與預期模式不匹配,則模塊將檢測到異常。比如,如果客戶端正在將自身標識為
當所報告的測試結(jié)果是有效的并且指示用戶代理應(yīng)用200和用戶是合法時,生成用戶代理應(yīng)用200的令牌,并且將令牌提供給客戶端安全模塊202。在其他實施例中,即使在測試結(jié)果不指示用戶代理應(yīng)用200的完全有效性的情況下,也可以生成用戶代理應(yīng)用的令牌。在這種情形下,令牌可以嵌入指示測試結(jié)果的信息,諸如哪些測試未被通過,或指示用戶代理應(yīng)用200的驗證程度的安全得分。
如果測試驗證模塊236沒有達到?jīng)Q定性結(jié)果,則它可以繼續(xù)分析用戶代理應(yīng)用202,直到達到結(jié)論為止。測試驗證模塊236可以發(fā)送針對客戶端安全模塊202的附加的測試以執(zhí)行并且向安全驗證系統(tǒng)120報告。例如,收集和報告附加數(shù)據(jù)或執(zhí)行特定任務(wù)。例如,如果測試結(jié)果指示用戶代理應(yīng)用202中的用戶活動似乎不與先前剖析的用戶行為相對應(yīng),則測試驗證模塊236可以提供全自動區(qū)分計算機和人類的圖靈測試(captcha)。如果測試結(jié)果指示用戶代理應(yīng)用未按預期執(zhí)行腳本功能或者用戶代理應(yīng)用沒有預期對象,則附加測試可能包括要由用戶代理應(yīng)用202執(zhí)行的腳本處理數(shù)學問題或者請求執(zhí)行異常腳本處理功能以確認用戶代理應(yīng)用202可以執(zhí)行與該用戶代理應(yīng)用相關(guān)聯(lián)的功能,或者以對合法用戶可能不明顯的但是對于自動攻擊者而言是麻煩的且不經(jīng)濟的方式延遲用戶代理的腳本。
在另一示例中,測試驗證模塊236可以等待并收集關(guān)于由客戶端執(zhí)行的后續(xù)頁面或請求的附加數(shù)據(jù)。在這種情況下,測試驗證模塊236可以臨時準許用戶代理應(yīng)用繼續(xù)進行,并且生成用戶代理應(yīng)用的令牌。該令牌可能指示用戶代理應(yīng)用未能進行一個或多個測試,或反映較低的安全得分。
在一些情況下,異常實際上可能是由應(yīng)用服務(wù)器116提供的頁面或服務(wù)被改變的指示,而不是對用戶代理應(yīng)用200有風險或者中間人已經(jīng)注入了惡意腳本或信息的指示。例如,引入頁面的新版本的應(yīng)用服務(wù)器116很可能改變頁面中的分區(qū)的數(shù)目、腳本的數(shù)目和頁面的布局。
當幾個報告顯示類似的異常時,測試驗證模塊236向應(yīng)用分析模塊238報告改變。應(yīng)用分析模塊238可以直接訪問應(yīng)用服務(wù)器并且請求頁面(或應(yīng)用)并且對其進行剖析以確定來自應(yīng)用服務(wù)器116的信息是否已經(jīng)改變。
結(jié)果,應(yīng)用分析模塊238可以向通知應(yīng)用改變的應(yīng)用的管理員提供警報或通知。這幫助應(yīng)用服務(wù)器116的管理員驗證這是否是計劃的改變,或者改變是否是攻擊的結(jié)果。使用由應(yīng)用分析模塊238標識的異常,可以通過測試結(jié)果更新模塊234生成新的基準。
圖3示出了根據(jù)一個實施例的客戶端安全模塊202的部件。用于不同用戶代理應(yīng)用的各種客戶端安全模塊202可以具有與這些部件相比更多或更少的部件。作為初始安全任務(wù)的一部分,用戶代理安全模塊可以提供對用戶代理應(yīng)用的或來自已知惡意服務(wù)器的弱點的附加監(jiān)控和防范。例如,用戶代理安全模塊300可以監(jiān)測從用戶代理應(yīng)用發(fā)送數(shù)據(jù)的所有請求,諸如httppost請求,并且阻止嘗試向未知或未授權(quán)的服務(wù)器發(fā)送數(shù)據(jù)的請求(諸如,不在特定站點的白名單中或如由安全驗證系統(tǒng)120檢測和剖析的已知服務(wù)器的列表的服務(wù)器)。
數(shù)據(jù)收集模塊310監(jiān)測并且觀察頁面、用戶代理應(yīng)用、以及用戶的活動,并且收集該數(shù)據(jù),以將數(shù)據(jù)報告回安全驗證系統(tǒng)120。作為數(shù)據(jù)的示例,該模塊可以收集:頁面的特征,諸如分區(qū)的數(shù)目、腳本的數(shù)目和頁面的其他元素;客戶端的特征,諸如指示瀏覽器類型和版本的特定對象、高速緩存中的對象的存在、推薦人檢查(用戶來自哪里)、以及特定用戶代理的存在,諸如渲染測試和使用畫布對象的對象;和用戶的活動,諸如鼠標移動、點擊、特定動作之間的定時、以及站點內(nèi)的頁面的順序。由數(shù)據(jù)收集模塊310收集的具體信息可以通過由安全驗證系統(tǒng)120指示的測試來指定。
該數(shù)據(jù)由數(shù)據(jù)收集模塊310聚合,被總結(jié)以用于有效傳輸,并且避免傳送秘密或私人信息,諸如由用戶鍵入的特定數(shù)據(jù)。
一旦所收集的數(shù)據(jù)被報告給安全驗證系統(tǒng)120,安全驗證系統(tǒng)120就可以發(fā)出令牌并且將其提供給客戶端安全模塊202??蛻舳税踩K將令牌存儲在安全令牌存儲裝置330中,該令牌具有標識與使用令牌相關(guān)的上下文的參數(shù),諸如令牌有效的時間段以及令牌對其有效的應(yīng)用服務(wù)器116或頁面的列表。
一旦令牌可用于特定頁面或應(yīng)用/動作,用戶代理修改模塊就使用令牌將其附加到由用戶代理應(yīng)用200對應(yīng)用服務(wù)器116所做的特定請求。例如,在在線商店中,當保護將商品添加到購物車的動作時,該特定動作可能需要令牌。用戶代理本身可能不包括令牌。一旦在客戶端安全模塊202中存在適當?shù)牧钆?,?yīng)用修改模塊就會修改用戶代理應(yīng)用的請求,例如,通過修改將商品添加到購物車的文檔對象模型(dom)中的代碼,通過對其附加令牌??梢酝ㄟ^將令牌添加到url,通過創(chuàng)建包含令牌的cookie,或以令牌進行驗證的任何其他格式或方法來附加令牌。
用戶代理修改模塊320還可以在相反的情況下修改應(yīng)用,即,當安全驗證系統(tǒng)確定活動應(yīng)當被阻止時(惡意用戶或標識出用戶被攻擊)。在這種情況下,執(zhí)行事務(wù)的特定腳本或代碼可以被包裝或替換為將向用戶發(fā)出警告并且將阻止實際事務(wù)發(fā)生的代碼。
客戶端安全模塊202還具有會話數(shù)據(jù)存儲庫340,其中它可以存儲同一會話中的頁面之間以及會話之間的數(shù)據(jù),以幫助更好地管理和保護客戶端和應(yīng)用。這可以包括其從安全驗證系統(tǒng)120接收到的會話數(shù)據(jù)、特定庫和模塊,以及特定的測試指令。
圖4示出了根據(jù)一個實施例的包括安全加載器的網(wǎng)頁。在該實施例中,安全加載器指令作為html報頭(例如,<head>標簽)內(nèi)的javascript標簽被添加,使得安全加載器提示用戶代理在頁面的開頭加載客戶端安全模塊202。
圖5示出了根據(jù)一個實施例的在應(yīng)用服務(wù)器、客戶端設(shè)備和安全驗證系統(tǒng)之間的交互圖。初始地,客戶端設(shè)備使用用戶代理應(yīng)用從應(yīng)用服務(wù)器請求500應(yīng)用內(nèi)容。應(yīng)用服務(wù)器向客戶端設(shè)備提供502引導用戶代理應(yīng)用取回安全測試的安全加載器,并且如果適用的話,提供客戶端安全模塊202。用戶應(yīng)用可以檢查客戶端安全模塊202是否存在高速緩存版本,如果是,則在如安全裝載器所指示的用于客戶端安全測試的請求504中提供高速緩存的客戶端安全模塊202的指示。如上文所指示的,對安全驗證系統(tǒng)的請求504指示用戶代理應(yīng)用的特征,諸如用戶代理應(yīng)用的版本、操作系統(tǒng)、應(yīng)用服務(wù)器處所請求的內(nèi)容等。
使用該請求,安全驗證系統(tǒng)標識506客戶端設(shè)備執(zhí)行的適當安全測試集合,并且向客戶端設(shè)備提供508安全測試。安全驗證系統(tǒng)還可以向客戶端設(shè)備提供執(zhí)行指定的安全測試的客戶端安全模塊。接下來,客戶端設(shè)備執(zhí)行用戶代理應(yīng)用510中的安全模塊,該安全模塊收集指定的安全測試數(shù)據(jù)512,諸如用戶代理應(yīng)用中的關(guān)于應(yīng)用內(nèi)容、用戶代理應(yīng)用和用戶動作的數(shù)據(jù)。
接下來,將測試結(jié)果報告514給安全驗證系統(tǒng),該安全驗證系統(tǒng)存儲數(shù)據(jù),并且如上文所描述的,參考訪問應(yīng)用內(nèi)容的其他用戶代理的簡檔來分析數(shù)據(jù),該安全驗證系統(tǒng)可以生成516描述測試結(jié)果的安全得分。比較可以基于預期客戶端特征(例如,用戶代理表現(xiàn)為其所聲稱的用戶代理)、當用戶代理訪問時應(yīng)用內(nèi)容的期望簡檔(例如,頁面上的元素的數(shù)目以及要由用戶代理應(yīng)用執(zhí)行的應(yīng)用內(nèi)容所請求的其他動作)以及用戶活動(例如,鼠標移動、點擊活動和事件定時)。
如果存在來自安全測試的、與預期測試結(jié)果不一致的異?;蚱渌Y(jié)果,則安全驗證系統(tǒng)可以通過指示客戶端安全模塊執(zhí)行附加測試來進一步詢問用戶代理應(yīng)用,并且將那些附加測試的結(jié)果報告給安全驗證系統(tǒng)。這些附加測試可以用于生成更新后的安全得分。如果沒有異常,在一些實施例中不進行附加的測試。
接下來,安全驗證系統(tǒng)生成并且向客戶端安全模塊提供522安全令牌。如上文所指出的,安全令牌可以指定所執(zhí)行的測試的安全得分和安全測試的測試結(jié)果。安全令牌可能指示得分為正或負,并且可能包括特定測試是通過還是失敗。當客戶端設(shè)備訪問應(yīng)用服務(wù)器時,客戶端安全模塊202插入安全令牌524以準許應(yīng)用服務(wù)器驗證安全驗證系統(tǒng)已經(jīng)測試了客戶端設(shè)備。在客戶端設(shè)備繼續(xù)訪問應(yīng)用服務(wù)器時,客戶端安全模塊繼續(xù)監(jiān)測526用戶代理應(yīng)用處的活動,諸如對網(wǎng)頁的訪問、應(yīng)用服務(wù)器處所請求的應(yīng)用內(nèi)容的改變等。這些活動被報告給安全驗證系統(tǒng)528,其可以確定530進一步的安全得分并且更新安全令牌532。更新后的令牌由客戶端安全模塊提供534給應(yīng)用服務(wù)器。
圖6示出了應(yīng)用服務(wù)器610從安全驗證系統(tǒng)620接收安全得分或測試驗證信息的環(huán)境。這些系統(tǒng)通常與先前所描述的客戶端設(shè)備100、應(yīng)用服務(wù)器116和安全驗證系統(tǒng)120類似地操作。在該實施例中,安全驗證系統(tǒng)620可以不向客戶端設(shè)備600發(fā)出用于提供對應(yīng)用服務(wù)器610的訪問的令牌,并且應(yīng)用服務(wù)器610不能實施令牌的要求。作為令牌實施的備選方案(并且在一些應(yīng)用中,除了令牌之外),在該示例中,安全驗證系統(tǒng)620向應(yīng)用服務(wù)器610提供測試分析。該測試分析可以包括安全得分和安全測試分析,諸如未被客戶端設(shè)備600通過的單獨測試。分析還可以作為跨越許多客戶端設(shè)備600的聚集被提供,以向應(yīng)用服務(wù)器610提供關(guān)于訪問應(yīng)用服務(wù)器610的客戶端設(shè)備的行為的更一般的數(shù)據(jù)。
作為該系統(tǒng)的一個應(yīng)用,應(yīng)用服務(wù)器610可以提供第三方負責支付的廣告或其他內(nèi)容。然而,第三方不想為沒有向?qū)嶋H用戶呈現(xiàn)的廣告支付費用。通過分析來自客戶端設(shè)備的測試結(jié)果并且在安全驗證系統(tǒng)620處聚集它們,安全驗證系統(tǒng)620可以向應(yīng)用服務(wù)器610提供信息,該信息描述哪些對廣告的訪問實際上表示對用戶的投放,例如,通過標識機器人或其他非用戶交互,但是避免了要求應(yīng)用服務(wù)器610分析令牌信息的任何開銷。
使用如本文中所描述的客戶端安全模塊和安全驗證系統(tǒng)提供了幾個益處和對各種惡意動作的防護,并且向應(yīng)用服務(wù)器呈現(xiàn)有效令牌提供了用戶代理應(yīng)用是其所聲稱的用戶代理應(yīng)用并且系統(tǒng)實際上由用戶而不是自動機器人操作的驗證。首先,如果惡意動作阻止客戶端安全模塊的執(zhí)行,則用戶代理應(yīng)用無法接收用于訪問應(yīng)用服務(wù)器的令牌,并且可以阻止使用應(yīng)用服務(wù)器。第二,如果系統(tǒng)由欺騙另一用戶代理的活動的機器人操作(例如,通過在http請求中的其用戶代理報頭中陳述它是另一用戶代理),這樣的機器人通常無法重現(xiàn)用戶代理應(yīng)用期望的用戶交互或用戶代理操作。也就是說,機器人可能無法提供用戶代理應(yīng)用的預期元素或?qū)ο螅⑶铱赡軣o法處理來自安全驗證系統(tǒng)的附加腳本請求。例如,機器人可能聲稱是chrome瀏覽器用戶代理,但沒有window.chrome對象。作為另一示例,鼠標移動、觸摸事件和其他用戶交互對于機器人而言是不同的,并且機器人可能無法響應(yīng)附加測試。
在另一示例中,攻擊者可能試圖插入對由應(yīng)用服務(wù)器提供的應(yīng)用內(nèi)容的攻擊,并且將附加信息插入到由應(yīng)用服務(wù)器提供的內(nèi)容中,或以其他方式改變其腳本處理或內(nèi)容,例如,通過跨站點腳本處理。在該示例中,用戶代理應(yīng)用在處理應(yīng)用內(nèi)容中的行為將與處理該應(yīng)用內(nèi)容的其他用戶代理應(yīng)用的行為簡檔不同,并且該差異可以通過安全測試被標識。在操作中,客戶端安全模塊開始報告關(guān)于應(yīng)用服務(wù)器所提供的頁面的信息,諸如瀏覽器特征的位置、對表單數(shù)據(jù)的訪問、頁面上的腳本的位置和原點等。當這些腳本和位置被提供給安全驗證系統(tǒng)時,安全驗證系統(tǒng)可以標識相對于該應(yīng)用內(nèi)容的其他用戶代理應(yīng)用訪問而存在該頁面中的附加腳本或附加分區(qū),并且拒絕發(fā)出令牌(或發(fā)出指示該特定交互的得分的令牌)或者阻止用戶代理應(yīng)用提交來自可疑腳本的數(shù)據(jù)。
因為客戶端安全模塊駐留在用戶代理應(yīng)用上,所以客戶端安全模塊還可以標識在應(yīng)用中執(zhí)行未預期或未授權(quán)的活動的嘗試,例如,以發(fā)起post請求,并且阻止它以阻止跨站點請求偽裝。在跨站點請求偽裝中,應(yīng)用服務(wù)器可能已經(jīng)存在受信連接。惡意代碼嘗試執(zhí)行另外可能對用戶透明地發(fā)生的post請求。因為通過客戶端安全模塊監(jiān)測來自用戶代理應(yīng)用的post請求并且將其報告給安全驗證系統(tǒng),所以可以標識并且阻止未預期的post請求處的這些嘗試。這可能會觸發(fā)安全驗證系統(tǒng)更新或撤銷令牌,或通過客戶端安全模塊向用戶發(fā)出警告。這可能會阻止例如腳本收集信用卡和密碼信息并且向第三方系統(tǒng)發(fā)起post請求。因此,客戶端安全模塊與由安全驗證系統(tǒng)驗證以訪問應(yīng)用服務(wù)器的令牌的要求的組合阻止對第三方站點的未預期訪問和對應(yīng)用服務(wù)器的未驗證訪問。
作為附加的益處,因為應(yīng)用服務(wù)器提供安全加載器而不是安全驗證系統(tǒng)本身,所以應(yīng)用服務(wù)器不需要不斷地更新其安全協(xié)議集合,其可以通過安全驗證系統(tǒng)集中管理許多應(yīng)用服務(wù)器。
進一步地,在大多數(shù)情況下,客戶端安全模塊呈現(xiàn)警告信息,其指示為什么通過提供特定可疑活動來阻止活動。如果實際用戶被阻止或者如果有效的api調(diào)用被阻止,則這是有幫助的。雖然機器人可以阻止客戶端安全模塊在一些情況下阻止機器人的活動,例如,通過阻止客戶端安全模塊,機器人仍然被應(yīng)用服務(wù)器的安全策略阻止,這是因為它們將不會獲得所需的令牌。
總結(jié)
出于說明的目的,已經(jīng)呈現(xiàn)了對本發(fā)明的實施例的前述描述;并不旨在窮舉或?qū)⒈景l(fā)明限制于所公開的精確形式。相關(guān)領(lǐng)域的技術(shù)人員可以理解,鑒于上述公開內(nèi)容,許多修改和變型是可能的。
該描述的某些部分根據(jù)關(guān)于信息的操作的算法和符號表示來描述本發(fā)明的實施例。這些算法描述和表示是數(shù)據(jù)處理領(lǐng)域的技術(shù)人員通常使用的,以便有效地將其作品的實質(zhì)傳達給本領(lǐng)域技術(shù)人員。在功能上、計算上或邏輯上描述的這些操作被理解為由計算機程序或等效電路、微代碼等實現(xiàn)。此外,已經(jīng)證明,在不失一般性的前提下,將這些操作的布置作為模塊進行參考有時是方便的。所描述的操作及其相關(guān)聯(lián)的模塊可以以軟件、固件、硬件或其任何組合來體現(xiàn)。
本文中所描述的任何步驟、操作或過程可以單獨地或與其他設(shè)備組合地利用一個或多個硬件或軟件模塊來執(zhí)行或?qū)崿F(xiàn)。在一個實施例中,使用計算機程序產(chǎn)品來實現(xiàn)軟件模塊,該計算機程序產(chǎn)品包括包含計算機程序代碼的計算機可讀介質(zhì),該計算機程序代碼可以由計算機處理器執(zhí)行以執(zhí)行所描述的任何或所有步驟、操作或步驟。
本發(fā)明的實施例還可以涉及用于執(zhí)行本文中的操作的裝置。該裝置可以針對所要求的目的而特別構(gòu)造,和/或其可以包括由被存儲在計算機中的計算機程序選擇性地激活或重新配置的通用計算設(shè)備。這樣的計算機程序可以被存儲在非暫態(tài)有形計算機可讀存儲介質(zhì)中或適于被存儲電子指令的任何類型的介質(zhì)中,其可以耦合至計算機系統(tǒng)總線。此外,在說明書中提到的任何計算系統(tǒng)可以包括單個處理器,或者可以是采用多個處理器設(shè)計以提高計算能力的架構(gòu)。
本發(fā)明的實施例還可以涉及通過本文中所描述的計算過程產(chǎn)生的產(chǎn)品。這樣的產(chǎn)品可以包括由計算過程產(chǎn)生的信息,其中信息被存儲在非暫態(tài)有形計算機可讀存儲介質(zhì)上,并且可以包括本文中所描述的計算機程序產(chǎn)品或其他數(shù)據(jù)組合的任何實施例。
最后,在說明書中使用的語言主要是出于可讀性和指導性目的而被選擇的,而不被選擇用以敘述或限制本發(fā)明的主題。因此,旨在本發(fā)明的范圍不受該具體實施方式的限制,而受基于在此應(yīng)用所發(fā)布的任何權(quán)利要求的限制。因此,本發(fā)明的實施例的公開旨在說明而非限制在所附權(quán)利要求中闡述的本發(fā)明的范圍。