專利名稱:瀏覽器及客戶端的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)領(lǐng)域,特別涉及一種瀏覽器及客戶端。
背景技術(shù):
目前,現(xiàn)有技術(shù)中的多進(jìn)程瀏覽器體系結(jié)構(gòu)系統(tǒng)均為將主進(jìn)程和呈現(xiàn)進(jìn)程分離以提升穩(wěn)定性的設(shè)計(jì)。例如Google公司提出的多進(jìn)程瀏覽器,這種多進(jìn)程瀏覽器包括獨(dú)特瀏覽器主進(jìn)程和用于每一個(gè)瀏覽器實(shí)例的呈現(xiàn)內(nèi)容區(qū)域的至少一個(gè)呈現(xiàn)進(jìn)程。其中,主進(jìn)程與一個(gè)或多個(gè)呈現(xiàn)引擎進(jìn)程可以進(jìn)行通信。通過這種方式,瀏覽器可以避免出錯(cuò)進(jìn)程影響其他瀏覽器進(jìn)程的結(jié)果,從而在增強(qiáng)用戶體驗(yàn)的同時(shí),提高用戶效率。然而,這種多線程瀏覽器架構(gòu)要么無法解決瀏覽器安全方面的風(fēng)險(xiǎn),要么增加的限制導(dǎo)致兼容性的問題使瀏覽 器插件不能正常運(yùn)行。
發(fā)明內(nèi)容
本發(fā)明旨在至少解決現(xiàn)有技術(shù)中存在的技術(shù)問題之一。為此,本發(fā)明的一個(gè)目的在于提出一種具有更高的安全性和健壯性的瀏覽器。本發(fā)明的另一目的在于提出一種客戶端。為了實(shí)現(xiàn)上述目的,本發(fā)明第一方面實(shí)例提出了一種瀏覽器該瀏覽器可分成主進(jìn)程和子進(jìn)程結(jié)構(gòu),其中,主進(jìn)程可以是用戶啟動(dòng)的進(jìn)程,也可以是用戶啟動(dòng)的進(jìn)程退出并構(gòu)造另一個(gè)安全的主進(jìn)程。其他進(jìn)程都由這個(gè)主進(jìn)程創(chuàng)建,在本申請中將其稱為子進(jìn)程,其中,子進(jìn)程也可以創(chuàng)建孫進(jìn)程。在本發(fā)明的一個(gè)實(shí)施例中,主進(jìn)程擁有不高于資源管理器的默認(rèn)權(quán)限,而子進(jìn)程一般擁有不高于主進(jìn)程的權(quán)限,并且主、子進(jìn)程的權(quán)限受控制策略配置。具體來講該瀏覽器包括主進(jìn)程和多個(gè)子進(jìn)程,其中,所述多個(gè)子進(jìn)程由所述主進(jìn)程創(chuàng)建,且所述多個(gè)子進(jìn)程具有不同的權(quán)限,且所述多個(gè)子進(jìn)程的權(quán)限不高于所述主進(jìn)程的權(quán)限。根據(jù)本發(fā)明實(shí)施例的瀏覽器基于多進(jìn)程瀏覽器架構(gòu),通過對不同功能進(jìn)程的權(quán)限控制,增強(qiáng)了用戶使用瀏覽器上網(wǎng)的安全性。且子進(jìn)程間可通過主進(jìn)程的調(diào)度和控制,與瀏覽器本身的內(nèi)部機(jī)制和邏輯結(jié)合緊密,提高了程序的運(yùn)行效率,用戶體驗(yàn)以及用戶效率。本發(fā)明另一方面的實(shí)施例提出了一種客戶端,其包括Windows操作系統(tǒng);以及上述第一方面實(shí)施例所述的瀏覽器。根據(jù)本發(fā)明實(shí)施例的客戶端,基于已有的多進(jìn)程瀏覽器架構(gòu),并結(jié)合沙箱的安全隔離技術(shù),很大強(qiáng)度的增強(qiáng)了用戶使用瀏覽器上網(wǎng)的安全性。并且將多進(jìn)程與沙箱與瀏覽器本身的內(nèi)部機(jī)制和邏輯結(jié)合的十分緊密,因此能極大提高程序的運(yùn)行效率,用戶體驗(yàn)以及用戶效率。本發(fā)明的附加方面和優(yōu)點(diǎn)將在下面的描述中部分給出,部分將從下面的描述中變得明顯,或通過本發(fā)明的實(shí)踐了解到。
本發(fā)明的上述和/或附加的方面和優(yōu)點(diǎn)從結(jié)合下面附圖對實(shí)施例的描述中將變得明顯和容易理解,其中圖I為本發(fā)明實(shí)施例的瀏覽器的架構(gòu)圖;圖2為本發(fā)明一個(gè)實(shí)施例的瀏覽器的架構(gòu)圖;圖3為本發(fā)明一個(gè)實(shí)施例的瀏覽器的渲染子進(jìn)程的示意圖;以及
圖4為本發(fā)明實(shí)施例的瀏覽器中的文件虛擬化的流程圖。
具體實(shí)施例方式下面詳細(xì)描述本發(fā)明的實(shí)施例,所述實(shí)施例的示例在附圖中示出,其中自始至終相同或類似的標(biāo)號表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實(shí)施例是示例性的,僅用于解釋本發(fā)明,而不能理解為對本發(fā)明的限制。在本發(fā)明的描述中,需要理解的是,術(shù)語“縱向”、“橫向”、“上”、“下”、“前”、“后”、“左”、“右”、“豎直”、“水平”、“頂”、“底”、“內(nèi)”、“外”等指示的方位或位置關(guān)系為基于附圖所示的方位或位置關(guān)系,僅是為了便于描述本發(fā)明和簡化描述,而不是指示或暗示所指的裝置或元件必須具有特定的方位、以特定的方位構(gòu)造和操作,因此不能理解為對本發(fā)明的限制。此外,術(shù)語“第一”、“第二”僅用于描述目的,而不能理解為指示或暗示相對重要性。在本發(fā)明的描述中,除非另有規(guī)定和限定,需要說明的是,術(shù)語“安裝”、“相連”、“連接”應(yīng)做廣義理解,例如,可以是機(jī)械連接或電連接,也可以是兩個(gè)元件內(nèi)部的連通,可以是直接相連,也可以通過中間媒介間接相連,對于本領(lǐng)域的普通技術(shù)人員而言,可以根據(jù)具體情況理解上述術(shù)語的具體含義。以下結(jié)合附圖首先描述根據(jù)本發(fā)明實(shí)施例的瀏覽器,該瀏覽器可分成主進(jìn)程和子進(jìn)程結(jié)構(gòu),其中,主進(jìn)程可以是用戶啟動(dòng)的進(jìn)程,也可以是用戶啟動(dòng)的進(jìn)程退出并構(gòu)造另一個(gè)安全的主進(jìn)程。其他進(jìn)程都由這個(gè)主進(jìn)程創(chuàng)建,在本申請中將其稱為子進(jìn)程,其中,子進(jìn)程也可以創(chuàng)建孫進(jìn)程。在本發(fā)明的一個(gè)實(shí)施例中,主進(jìn)程擁有不高于資源管理器的默認(rèn)權(quán)限,而子進(jìn)程擁有不高于主進(jìn)程的權(quán)限,并且主、子進(jìn)程的權(quán)限受控制策略配置。具體而言,參考圖I或圖2,本發(fā)明實(shí)施例的瀏覽器100包括主進(jìn)程110和與主進(jìn)程110相互通信且被主進(jìn)程110控制的多個(gè)子進(jìn)程。其中,多個(gè)子進(jìn)程由主進(jìn)程110創(chuàng)建,且多個(gè)子進(jìn)程具有不同的權(quán)限。如圖I或圖2所示,多個(gè)子進(jìn)程包括高權(quán)代理子進(jìn)程120、瀏覽器應(yīng)用擴(kuò)展子進(jìn)程130和渲染子進(jìn)程140,其中,高權(quán)代理子進(jìn)程120、瀏覽器應(yīng)用擴(kuò)展子進(jìn)程130、渲染子進(jìn)程140和主進(jìn)程110之間具有不同的權(quán)限。且在本發(fā)明的一個(gè)實(shí)施例中,瀏覽器應(yīng)用擴(kuò)展子進(jìn)程130包括Webkit核和/或IE核、渲染子進(jìn)程140包括Webkit核和/或IE核(Webkit內(nèi)核和/或IE內(nèi)核)。當(dāng)然在本發(fā)明的其他實(shí)施例中,該渲染子進(jìn)程140還可以包括其他目前已有的瀏覽器內(nèi)核,或今后發(fā)展的瀏覽器內(nèi)核。在本發(fā)明的實(shí)施例中,主進(jìn)程110是瀏覽器程序啟動(dòng)時(shí)的第一個(gè)程序,該主進(jìn)程110的功能是顯示和管理瀏覽器的整體外觀和數(shù)據(jù)。具體地,該主進(jìn)程110的權(quán)限與一般的Windows程序權(quán)限一致。高權(quán)代理子進(jìn)程120是由主進(jìn)程110啟動(dòng)的,高權(quán)代理子進(jìn)程120的權(quán)限高于主進(jìn)程110的權(quán)限,但高權(quán)代理子進(jìn)程120在啟動(dòng)時(shí)需要用戶的同意。高權(quán)代理子進(jìn)程120用于幫助其他子進(jìn)程進(jìn)行一些高權(quán)限的操作,例如安裝插件等。瀏覽器應(yīng)用擴(kuò)展子進(jìn)程130和渲染子進(jìn)程140也均由主進(jìn)程110啟動(dòng)。在本發(fā)明的實(shí)施例中,為了對瀏覽器應(yīng)用擴(kuò)展子進(jìn)程130和渲染子進(jìn)程140的權(quán)限進(jìn)行限制,本發(fā)明為瀏覽器應(yīng)用擴(kuò)展子進(jìn)程130和渲染子進(jìn)程140設(shè)置了限制的Token和Job,并進(jìn)行了相應(yīng)的API (稍后會(huì)詳細(xì)介紹)。瀏覽器應(yīng)用擴(kuò)展子進(jìn)程130用于運(yùn)行擴(kuò)展插件以及相應(yīng)的JS代碼,并將此插件的功能提供給其他子進(jìn)程使用。渲染子進(jìn)程140用于當(dāng)瀏覽器的內(nèi)核(例如Webkit核和/或IE核)打開ー個(gè)網(wǎng)站頁面時(shí),主進(jìn)程110將會(huì)創(chuàng)建一個(gè)該渲染子進(jìn)程140,并將這個(gè)網(wǎng)頁的渲染管理等操作都放在這個(gè)進(jìn)程中進(jìn)行。由于本申請對具體的瀏覽器進(jìn)程進(jìn)行了劃分,從而使得每個(gè)子進(jìn)程的角色控制更加容易,且將瀏覽器應(yīng)用擴(kuò)展子進(jìn)程130和渲染子進(jìn)程140分別放入不同的限制進(jìn)程中,因此大大地加強(qiáng)了瀏覽器架構(gòu)的清晰度以及管理的便利性。在本發(fā)明的實(shí)施例中,多個(gè)子進(jìn)程受主進(jìn)程110的控制,例如,主進(jìn)程110控制高權(quán)代理子進(jìn)程120、瀏覽器應(yīng)用擴(kuò)展子進(jìn)程130和渲染子進(jìn)程140的開啟和關(guān)閉。渲染子進(jìn)程140包括一個(gè)或者多個(gè),如圖I所示,渲染子進(jìn)程140為N個(gè)(渲染子進(jìn)程I至渲染子進(jìn)程N(yùn))。此外,主進(jìn)程110還用于對多個(gè)子進(jìn)程中的ー個(gè)子進(jìn)程進(jìn)行提權(quán)操作。具體地,提權(quán)操作有兩種方式,一 種方式是主進(jìn)程110接收多個(gè)子進(jìn)程中的一個(gè)子進(jìn)程的提權(quán)請求,由主進(jìn)程110根據(jù)提權(quán)請求代理子進(jìn)程進(jìn)行操作。另ー種方式是由主進(jìn)程110臨時(shí)調(diào)整子進(jìn)程的權(quán)限,并在子進(jìn)程執(zhí)行相應(yīng)操作之后恢復(fù)子進(jìn)程的權(quán)限至原有的權(quán)限。進(jìn)ー步地,子進(jìn)程可在主進(jìn)程110提權(quán)之后進(jìn)行讀寫操作、啟動(dòng)孫進(jìn)程操作或訪問SSL證書操作。即當(dāng)主進(jìn)程110代理子進(jìn)程進(jìn)行各種操作,如讀寫操作、啟動(dòng)孫進(jìn)程操作或訪問SSL證書操作。其中,孫進(jìn)程為上述子進(jìn)程創(chuàng)建的進(jìn)程。對于主進(jìn)程110創(chuàng)建的子進(jìn)程以及對于子進(jìn)程創(chuàng)建的孫進(jìn)程而言,都需要進(jìn)行進(jìn)程的權(quán)限的限定,在本發(fā)明的示例中,通過設(shè)置Token/Job限制子進(jìn)程或者孫進(jìn)程的權(quán)限,即子進(jìn)程或?qū)O進(jìn)程具有限制的令牌Token/Job,Token/Job用于對子進(jìn)程或?qū)O進(jìn)程的權(quán)限進(jìn)行限制。進(jìn)ー步而言,對于子進(jìn)程和孫進(jìn)程的權(quán)限,還包括通過鉤子Hook提權(quán)函數(shù)的限制進(jìn)行限制,即子進(jìn)程或所述孫進(jìn)程之中還包括鉤子Hook技術(shù)來攔截Windows API提供提權(quán)或虛擬化的功能。例如在子進(jìn)程創(chuàng)建孫進(jìn)程的時(shí)候,所述Hook提權(quán)功能用于獲得所述子進(jìn)程或所述孫進(jìn)程的上下文,井根據(jù)所述上下文向所述主進(jìn)程發(fā)送提權(quán)請求;再如子進(jìn)程創(chuàng)建和寫入文件的時(shí)候,Hook虛擬化功能將這個(gè)文件虛擬化到ー個(gè)安全的目錄;又如訪問SSL證書的時(shí)候,Hook提權(quán)功能用于將該線程的Token切換到高權(quán)限的Token。參見圖2,渲染子進(jìn)程進(jìn)ー步包括Webkit渲染內(nèi)核和/或IE渲染內(nèi)核,Webkit渲染內(nèi)核和/或IE渲染內(nèi)核中至少ー個(gè)具有Token/Job以及Hook提權(quán)函數(shù)。如圖2所示,在每個(gè)渲染子進(jìn)程中,僅示出了包括一種渲染內(nèi)核的渲染子進(jìn)程,如一些渲染子進(jìn)程包括Webkit渲染內(nèi)核,另ー些渲染子進(jìn)程包括IE渲染內(nèi)核。但是本發(fā)明的實(shí)施例并不限于此,在一個(gè)渲染子進(jìn)程中,也可以同時(shí)包括Webkit渲染內(nèi)核和IE渲染內(nèi)核。當(dāng)然,本發(fā)明的實(shí)施例并不限于瀏覽器,其他客戶端如頂,閱讀器,播放器也可以采用這種方式實(shí)現(xiàn)。本發(fā)明實(shí)施例的瀏覽器基于多進(jìn)程瀏覽器架構(gòu),通過對不同功能進(jìn)程的權(quán)限控制,增強(qiáng)了用戶使用瀏覽器上網(wǎng)的安全性。且進(jìn)程間通過主進(jìn)程的調(diào)度和控制,與瀏覽器本身的內(nèi)部機(jī)制和邏輯結(jié)合緊密,提高了程序的運(yùn)行效率,用戶體驗(yàn)以及用戶效率。具體地說,主進(jìn)程110是程序啟動(dòng)時(shí)的第一個(gè)程序,其功能為顯示和管理瀏覽器100的整體外觀和數(shù)據(jù)。主進(jìn)程110具有的權(quán)限通常被設(shè)置成不高于資源管理器的默認(rèn)權(quán)限且由控制策略進(jìn)行配置。高權(quán)代理子進(jìn)程120是由主進(jìn)程110創(chuàng)建并啟動(dòng)的,其權(quán)限被設(shè)置成不高于主進(jìn)程110的權(quán)限,高權(quán)代理子進(jìn)程120在啟動(dòng)的時(shí)候,需要用戶的確認(rèn)。另外,該高權(quán)代理子進(jìn)程120的功能為輔助瀏覽器100的其他進(jìn)程(如瀏覽器應(yīng)用擴(kuò)展子進(jìn)程130和渲染子進(jìn)程140)進(jìn)行ー些需要高權(quán)限的操作,比如幫助瀏覽器應(yīng)用擴(kuò)展子進(jìn)程130安裝插件。瀏覽器應(yīng)用擴(kuò)展子進(jìn)程130的功能為運(yùn)行瀏覽器100中的擴(kuò)展插件以及相應(yīng)的Javascript(Js)代碼,并將此插件的功能提供給瀏覽器100的其他進(jìn)程使用。該瀏覽器應(yīng)用擴(kuò)展子進(jìn)程130的權(quán)限被相應(yīng)的限制,如圖2所示,例如,瀏覽器應(yīng)用擴(kuò)展子進(jìn)程130具有限制的令牌Token/Job以及若干API Hook中。參見圖3,渲染子進(jìn)程140包括Webkit渲染子進(jìn)程141和/或IE渲染子進(jìn)程142,也就是說,渲染子進(jìn)程140至少包括Webkit渲染子進(jìn)程141和IE渲染子進(jìn)程142的其中ー個(gè),當(dāng)然也可同時(shí)包括多個(gè)Webkit渲染子進(jìn)程141和/或多個(gè)IE渲染子進(jìn)程142。如圖3中,示出了包括I個(gè)Webkit渲染子進(jìn)程141和I個(gè)IE渲染子進(jìn)程142的渲染子進(jìn)程140。且每個(gè)渲染進(jìn)程中可包括多個(gè)渲染內(nèi)核,如圖3中示所示,Webkit渲染子進(jìn)程141中包括N個(gè)Webkit渲染內(nèi)核,IE渲染子進(jìn)程142包括N個(gè)IE渲染內(nèi)核。其中,Webkit渲染子進(jìn)程的功能為當(dāng)用戶使用瀏覽器100的Webkit內(nèi)核打開ー個(gè)網(wǎng)站頁面時(shí),主進(jìn)程110將會(huì)創(chuàng)建ー個(gè)Webkit內(nèi)核類型的Webkit渲染子進(jìn)程,并將這個(gè)網(wǎng)頁的渲染管理等操作都放在Webkit渲染子進(jìn)程進(jìn)行。該Webkit渲染子進(jìn)程的權(quán)限被相應(yīng)的限制,再次結(jié)合圖2,例如,Webkit渲染子進(jìn)程具有限制令牌Token/Job以及若干API Hook。當(dāng)然,對于ー個(gè)渲染子進(jìn)程140而言,其可同時(shí)包括Webkit渲染內(nèi)核和IE渲染內(nèi)核。IE渲染子進(jìn)程的功能為當(dāng)用戶使用瀏覽器100的IE內(nèi)核打開ー個(gè)網(wǎng)站頁面吋,主進(jìn)程110將會(huì)創(chuàng)建ー個(gè)IE內(nèi)核類型的IE渲染子進(jìn)程,并將這個(gè)網(wǎng)頁的渲染管理等操作都放在這個(gè)進(jìn)程中進(jìn)行。同樣地,如圖2所示,該IE渲染子進(jìn)程的權(quán)限被相應(yīng)的限制,例如,IE渲染子進(jìn)程具有限制令牌Token/Job以及若干API Hook。綜上,本發(fā)明實(shí)施例的瀏覽器將進(jìn)程分為主進(jìn)程110、高權(quán)代理子進(jìn)程120、瀏覽器應(yīng)用擴(kuò)展子進(jìn)程130和渲染子進(jìn)程140等4中類型,對每ー種進(jìn)程分別進(jìn)行權(quán)限控制,從圖2中能夠清晰地看出,瀏覽器應(yīng)用擴(kuò)展子進(jìn)程130、渲染子進(jìn)程和IE渲染子進(jìn)程中分別具有相應(yīng)的限制的令牌Token且被設(shè)置在相應(yīng)的限制Job中,并設(shè)置有相關(guān)的Hook,體現(xiàn)出了不同的進(jìn)程具有不同的安全級別的特點(diǎn)。這樣,在提高網(wǎng)絡(luò)完全的同時(shí)加強(qiáng)了上述瀏覽器的架構(gòu)的清晰度以及對瀏覽器的架構(gòu)的管理帶來便利。上面提到的瀏覽器100的各種進(jìn)程中,并不是単獨(dú)各自進(jìn)行工作的,而是相互協(xié)作來完成工作的。具體地,主進(jìn)程Iio與高權(quán)代理子進(jìn)程120、瀏覽器應(yīng)用擴(kuò)展子進(jìn)程130 和渲染子進(jìn)程140之間相互通訊,共同完成工作。作為ー個(gè)具體的示例,其通訊方式如下I、主進(jìn)程110與高權(quán)代理子進(jìn)程120之間的通訊。例如當(dāng)主進(jìn)程110要安裝程序或插件吋,主進(jìn)程110向高權(quán)代理子進(jìn)程120發(fā)送通知,高權(quán)代理子進(jìn)程120在收到通知后向用戶提示是否同意安裝程序或插件。這是由于主進(jìn)程110的權(quán)限不允許安裝程序或插件,需要啟動(dòng)ー個(gè)高權(quán)代理子進(jìn)程120并通過高權(quán)代理子進(jìn)程120向用戶發(fā)起請求的提示。2、當(dāng)瀏覽器應(yīng)用擴(kuò)展子進(jìn)程130和渲染子進(jìn)程140 (也可稱之為Webkit渲染子進(jìn)程和/或IE渲染子進(jìn)程)處理對應(yīng)權(quán)限之外的操作吋,瀏覽器應(yīng)用擴(kuò)展子進(jìn)程130和渲染子進(jìn)程140向主進(jìn)程110發(fā) 送提權(quán)請求,主進(jìn)程110根據(jù)瀏覽器應(yīng)用擴(kuò)展子進(jìn)程130和渲染子進(jìn)程140所對應(yīng)的權(quán)限判斷是否允許上述操作。例如,當(dāng)瀏覽器應(yīng)用擴(kuò)展子進(jìn)程130請求高權(quán)代理子進(jìn)程120安裝程序或插件,瀏覽器應(yīng)用擴(kuò)展子進(jìn)程130將請求發(fā)送給主程序110,主進(jìn)程110判斷是否允許,如果判斷為允許則將該請求轉(zhuǎn)發(fā)至高權(quán)代理子進(jìn)程120,否則主進(jìn)程110取消該請求。這是由于瀏覽器應(yīng)用擴(kuò)展子進(jìn)程130是受本身的令牌Token/Job以及若干API Hook,因此瀏覽器應(yīng)用擴(kuò)展子進(jìn)程130的操作將受到限制,因此,通過主程序110對瀏覽器應(yīng)用擴(kuò)展子進(jìn)程130的操作請求之前對操作進(jìn)行判斷,從而允許或限制該操作的發(fā)生,進(jìn)ー步保證了系統(tǒng)的安全性。在本發(fā)明的另ー示例中,當(dāng)瀏覽器應(yīng)用擴(kuò)展子進(jìn)程130寫某個(gè)目錄的文件操作,但由于受限制而不能寫吋,因此需要通知主進(jìn)程110去幫助寫這個(gè)文件,此時(shí),主進(jìn)程110對這個(gè)操作進(jìn)行判斷,得知是否允許該瀏覽器應(yīng)用擴(kuò)展子進(jìn)程130做出這樣的操作,從而避免系統(tǒng)受到攻擊。渲染子進(jìn)程140與主進(jìn)程110之間的通訊和以上描述的瀏覽器應(yīng)用擴(kuò)展子進(jìn)程130與主進(jìn)程110之間的通訊方式類似,為了減少冗余,不做贅述。綜上,從主進(jìn)程110與各種不同角色的進(jìn)程(高權(quán)代理子進(jìn)程120、瀏覽器應(yīng)用擴(kuò)展子進(jìn)程130以及渲染子進(jìn)程140)之間的通信可以得知,不同的進(jìn)程所處的角色是不一樣的且對應(yīng)的權(quán)限也不同,所以當(dāng)這些進(jìn)程進(jìn)行進(jìn)程間通信,需要做ー些代理操作時(shí),主進(jìn)程110會(huì)對這些進(jìn)程做相應(yīng)的權(quán)限檢查,判斷是否允許這些進(jìn)程進(jìn)行上述的操作,從而提升了系統(tǒng)的安全性。如圖4所示,瀏覽器應(yīng)用擴(kuò)展子進(jìn)程130和渲染子進(jìn)程140具有至少ー個(gè)鉤子Hook虛擬化函數(shù)以實(shí)現(xiàn)文件虛擬化。例如,當(dāng)渲染子進(jìn)程140對網(wǎng)頁進(jìn)行文件創(chuàng)建或?qū)懭氩僮鲄迹琀ook虛擬化函數(shù)將網(wǎng)頁存儲(chǔ)至可寫的虛擬化目錄,并通知主進(jìn)程110將網(wǎng)頁文件拷貝至用戶指定的目錄。由此,解決了在包含權(quán)限限制的系統(tǒng)中導(dǎo)致的不兼容性問題,即某些軟件沒有遵循最小的權(quán)限原則,當(dāng)系統(tǒng)調(diào)用被拒絕的時(shí)候?qū)o法正常工作,例如IO操作。因此,采用文件虛擬化方式將對關(guān)鍵位置的改寫操作重定向到非關(guān)鍵虛擬目錄下,使得軟件能繼續(xù)正常運(yùn)行。另外,為了加強(qiáng)對已有的程序兼容性,在本發(fā)明的ー個(gè)具體例子中,將本不可寫的目錄虛擬化到可寫的虛擬化目錄,通過鉤子Hook函數(shù)(文件操作函數(shù))來實(shí)現(xiàn)。本發(fā)明實(shí)施例通過鉤子Hook函數(shù)實(shí)現(xiàn)文件虛擬化,有別于傳統(tǒng)意義上使用Hook技術(shù)來限制系統(tǒng)調(diào)用導(dǎo)致的問題,由此,如果病毒繞過Hook,本發(fā)明實(shí)施例的瀏覽器應(yīng)用擴(kuò)展子進(jìn)程130和渲染子進(jìn)程140等使用的安全描述符ACL安全檢查機(jī)制和Job機(jī)制將在系統(tǒng)內(nèi)核層面將其阻止。進(jìn)ー步地,當(dāng)渲染子進(jìn)程140對網(wǎng)頁進(jìn)行另存為操作吋,Hook虛擬化函數(shù)將網(wǎng)頁存儲(chǔ)至可寫的虛擬化目錄作為網(wǎng)頁文件,并通知主進(jìn)程110將網(wǎng)頁文件拷貝至用戶指定的目錄。具體而言,根據(jù)瀏覽器100的邏輯還可實(shí)現(xiàn)瀏覽器的正常功能。例如,如果渲染子進(jìn)程需要將網(wǎng)頁另存為ー個(gè)文件,那么Hook虛擬化函數(shù)將會(huì)將該文件存至ー個(gè)可寫的虛擬化目錄,并通知主進(jìn)程110將該文件拷貝到用戶指定的目錄。這是本發(fā)明實(shí)施例的瀏覽器100的其中ー項(xiàng)基本功能,該功能的實(shí)現(xiàn)和瀏覽器100的邏輯結(jié)合緊密,相比于通用的沙箱將上述網(wǎng)頁另存為操作通過虛擬化方式相比,解決了用戶無法在原本選擇的目錄下面找到相應(yīng)的文件的問題,而可以在用戶指定的目錄下找到。在本發(fā)明的一個(gè)實(shí)施例中,渲染子進(jìn)程140具有Hook進(jìn)程啟動(dòng)函數(shù),當(dāng)渲染子進(jìn)程140創(chuàng)建或啟動(dòng)孫進(jìn)程吋,Hook進(jìn)程啟動(dòng)函數(shù)檢查子進(jìn)程文件,如果判斷所述孫進(jìn)程屬于預(yù)設(shè)的白名單,為所述孫進(jìn)程設(shè)置于所述主進(jìn)程相同的Token和Job。具體而言,當(dāng)受限的渲染子進(jìn)程140啟動(dòng)子進(jìn)程,如果按照正常的路徑啟動(dòng),由于使用的Job機(jī)制,限制了子進(jìn)程的啟動(dòng),而且子進(jìn)程啟動(dòng)后的Token中具有的權(quán)限是和渲染子進(jìn)程140相同的,導(dǎo)致很多操作無法進(jìn)行。因此通過本發(fā)明實(shí)施例的Hook進(jìn)程啟動(dòng)函數(shù)改變子進(jìn)程啟動(dòng)的路徑,然后判斷所啟動(dòng)的子進(jìn)程是否位于預(yù)設(shè)的白名單中,預(yù)設(shè)的白名單所檢查項(xiàng)目例如包括程序所屬的公司簽名以及程序名稱,如果檢查到公司簽名以及程序名稱存在于預(yù)設(shè)的白名單中,則使用主進(jìn)程110繼承來的一個(gè)權(quán)限相對較高的Token,并用系統(tǒng)中的 CreateProcessAsUser啟動(dòng)該子進(jìn)程。由此,解決了用戶在使用瀏覽器時(shí)很多正常的功能或插件(子進(jìn)程)不能啟用,影響用戶體驗(yàn)的問題,提升了用戶體驗(yàn)。 在本發(fā)明的另ー示例中,當(dāng)渲染子進(jìn)程140啟動(dòng)COM組件吋,如果判斷COM組件屬于預(yù)設(shè)的白名單,則渲染子進(jìn)程140通知主進(jìn)程110創(chuàng)建該COM組件,在主進(jìn)程110創(chuàng)建COM組件之后,將COM組件對應(yīng)的COM接ロ發(fā)送至相應(yīng)的渲染子進(jìn)程140。具體地,由于受限的渲染子進(jìn)程140無法創(chuàng)建一些較高權(quán)限的COM組件,而這些COM組件又需要使用。那么使用類似于上述實(shí)施例2中所述的子進(jìn)程啟動(dòng)的方式做相應(yīng)的檢查,檢查通過之后,通知主進(jìn)程110幫助創(chuàng)建COM組件,然后主進(jìn)程110將創(chuàng)建成功的COM接ロ傳送到相應(yīng)的渲染子進(jìn)程140中,從而實(shí)現(xiàn)創(chuàng)建COM組件的權(quán)限提升。作為ー個(gè)具體的例子,在通用的沙箱中,很多COM組件是無法啟動(dòng)的,如迅雷看看的插件,將很大程度上影響了用戶的正常使用,通過上述方式創(chuàng)建COM組件能夠在提升安全性的同時(shí)也不會(huì)影響到用戶的正常使用,更加合理。進(jìn)ー步地,當(dāng)渲染子進(jìn)程140打開受限對象的句柄時(shí),渲染子進(jìn)程140通知主進(jìn)程110,在主進(jìn)程110打開句柄之后將打開的句柄復(fù)制至渲染子進(jìn)程140。具體地說,在受限的渲染子進(jìn)程140中,由于瀏覽器110本身的功能邏輯需要,有些時(shí)候需要一些對象的句柄,而這些對象在當(dāng)前的渲染子進(jìn)程140的權(quán)限中是無法打開的,本發(fā)明的實(shí)施例通過將需要打開的目標(biāo)對象的信息存儲(chǔ)下來,并通過進(jìn)程間通信的機(jī)制傳送到主進(jìn)程110,由主進(jìn)程110幫助打開這個(gè)句柄,然后使用系統(tǒng)中的DuplicateHandle將主進(jìn)程110的句柄復(fù)制到相應(yīng)的渲染子進(jìn)程140中,從而實(shí)現(xiàn)渲染子進(jìn)程140打開對象句柄的功能。該方式與Hook相互配合,從而在瀏覽器100特定的邏輯中實(shí)現(xiàn)權(quán)限的突破,而在其他時(shí)候保持權(quán)限的限制。作為ー個(gè)具體的例子,例如某個(gè)渲染子進(jìn)程140想打開文件另存為對話框,把某些數(shù)據(jù)存為文件,而由于渲染子進(jìn)程140受到權(quán)限的限制,不能在這個(gè)目錄打開文件(不受限的主進(jìn)程110是可以打開這個(gè)文件的),則通過Hook另存為對話框函數(shù),記錄下用戶選擇的文件路徑,然后在打開文件的函數(shù)中檢查這個(gè)路徑,檢查到之后使用進(jìn)程間句柄傳遞技木,通過主進(jìn)程110打開該進(jìn)程句柄,然后傳遞到渲染子進(jìn)程140中,從而實(shí)現(xiàn)該邏輯的正常工作。如上所述的方式解決了與瀏覽器100邏輯結(jié)合緊密的沙箱兼容性問題,當(dāng)然,還有其他很多相關(guān)的處理。通過對瀏覽器100的機(jī)制和邏輯進(jìn)行特殊處理,使得程序運(yùn)行的效率以及用戶體驗(yàn)得到提升,且鉤子Hook函數(shù)一直處于工作狀態(tài),由此減少了判斷錯(cuò)誤的風(fēng)險(xiǎn),能更好的提高安全性。本發(fā)明的進(jìn)ー步實(shí)施例提出了一種客戶端,包括Windows操作系統(tǒng)和根據(jù)上述第一方面給實(shí)施例所述的瀏覽器100。在本發(fā)明的一個(gè)實(shí)施例中。結(jié)合圖2,Windows操作系統(tǒng)為主進(jìn)程110、高權(quán)代理子進(jìn)程120、瀏覽器應(yīng)用擴(kuò)展子進(jìn)程130和渲染子進(jìn)程140中的每ー個(gè)建立對應(yīng)的沙箱,且沙箱具有不同的權(quán)限級別,如圖2所示,不同類型的進(jìn)程被設(shè)置在具有不同權(quán)限級別的沙箱中。具體而言Windows操作系統(tǒng)通過安全描述符ACL安全檢查機(jī)制根據(jù)主進(jìn)程110、高權(quán)代理子進(jìn)程120、瀏覽器應(yīng)用擴(kuò)展子進(jìn)程130和渲染子進(jìn)程140所對應(yīng)的Token對主進(jìn)程110、高權(quán)代理子進(jìn)程120、瀏覽器應(yīng)用擴(kuò)展子進(jìn)程130和渲染子進(jìn)程140進(jìn)行權(quán)限控制。具體而言,Windows操作系統(tǒng)通過安全描述符ACL安全檢查機(jī)制根據(jù)主進(jìn)程110、高權(quán)代理子進(jìn)程120、 瀏覽器應(yīng)用擴(kuò)展子進(jìn)程130和渲染子進(jìn)程140所對應(yīng)的Token,對主進(jìn)程110、高權(quán)代理子 進(jìn)程120、瀏覽器應(yīng)用擴(kuò)展子進(jìn)程130和渲染子進(jìn)程140進(jìn)行權(quán)限控制。在windows操作系統(tǒng)中,安全描述符ACL安全檢查機(jī)制是以進(jìn)程為邊界的,一個(gè)進(jìn)程有ー個(gè)Token,Token存儲(chǔ)了相應(yīng)的進(jìn)程所具有的權(quán)限,當(dāng)進(jìn)程進(jìn)行一些系統(tǒng)操作,比如文件操作,注冊表操作等,則會(huì)檢查進(jìn)程的Token和目標(biāo)對象(文件或注冊表等具有安全屬性的對象)所對應(yīng)的權(quán)限是否具備。而這種方式的實(shí)現(xiàn)如下Windows操作系統(tǒng)通過CreateRestrictedToken API函數(shù)獲得具有限制權(quán)限的Token,并通過CreateProcessAsUser函數(shù)根據(jù)該具有限制權(quán)限的Token建立相應(yīng)的瀏覽器應(yīng)用擴(kuò)展子進(jìn)程130和渲染子進(jìn)程140。也就是說,使用CreateRestrictedToken API來得到一個(gè)削減權(quán)限的Token,然后再使用CreateProcessAsUser以該Token創(chuàng)建出一個(gè)進(jìn)程。需要說明的是,通過該方式應(yīng)盡可能多的去除Token中所具有的權(quán)限,只留下基本的權(quán)限,由此創(chuàng)建出來的進(jìn)程將不具備Windows操作系統(tǒng)的資源,或者絕大部分用戶資源的權(quán)限,從而進(jìn)一步提升了系統(tǒng)的安全性。由于每種進(jìn)程都有自己的角色以及需要完成的功能,我們根據(jù)進(jìn)程的角色分配不同權(quán)限的Token,從而實(shí)現(xiàn)不同角色的進(jìn)程擁有不同的權(quán)限。具體而言,每種進(jìn)程分配的權(quán)限如下I、主進(jìn)程110 :此進(jìn)程是瀏覽器100的主進(jìn)程,由用戶點(diǎn)擊啟動(dòng),具有一般的訪問權(quán)限,可以訪問絕大部分本用戶的資源。2、高權(quán)代理子進(jìn)程120 :分配用戶可獲得的最高權(quán)限,由主進(jìn)程110啟動(dòng),并需要用戶同意之后啟動(dòng)。該進(jìn)程擁有除了ー些與系統(tǒng)操作相關(guān)的權(quán)限外的權(quán)限,權(quán)限相對較高。3、瀏覽器應(yīng)用擴(kuò)展子進(jìn)程130 :此進(jìn)程由主進(jìn)程110啟動(dòng),運(yùn)行ー些插件以及JS代碼,由于這個(gè)進(jìn)程相對危險(xiǎn)性較小,因此在Token上做的限制較少,并加入一個(gè)限制Job當(dāng)中,同時(shí)設(shè)置有相關(guān)的Hook。4、渲染子進(jìn)程此進(jìn)程由主進(jìn)程110啟動(dòng),使用Webkit和/或IE內(nèi)核顯示網(wǎng)頁,這個(gè)進(jìn)程是需要加強(qiáng)防護(hù)的,即將ー個(gè)削減了大部分用戶權(quán)限的Token賦予該進(jìn)程,只留基本可用的以保證程序的正常運(yùn)行,而后將這個(gè)進(jìn)程放入一個(gè)限制Job中,限制的權(quán)限為進(jìn)程啟動(dòng)等,同時(shí)設(shè)置有相關(guān)的Hook,以提高兼容性以及進(jìn)行部分限制,從而達(dá)到提升操作系統(tǒng)安全性的目的。
進(jìn)ー步而言,上述具有限制權(quán)限的Token不但包括具有限制的ACL,還可具有限制特權(quán)。即通過使用CreateRestrictedToken API來限制Token中有關(guān)ACL的部分,實(shí)際上CreateRestrictedToken API還能限制Token中的特權(quán),例如限制了進(jìn)程的調(diào)試特權(quán),加載驅(qū)動(dòng)特權(quán)等,這些特權(quán)都是一些比較高的特權(quán),可以操作相當(dāng)多的系統(tǒng)資源,如果被病毒木馬取得,將是十分危險(xiǎn)的。因此,通過對特權(quán)的限制,能夠進(jìn)ー步地提高系統(tǒng)的安全性能。對于Windows提供的上述幾種機(jī)制來說,都以進(jìn)程為邊界,因此多進(jìn)程瀏覽器架構(gòu)應(yīng)用于沙箱有絕佳的好處。這是由于本發(fā)明實(shí)施例的每ー類進(jìn)程只負(fù)責(zé)ー個(gè)基本的功能,具有很清晰的角色,當(dāng)將相應(yīng)的沙箱應(yīng)用于該進(jìn)程時(shí),可以根據(jù)該進(jìn)程的角色進(jìn)行不同的權(quán)限控制,從而讓進(jìn)程可以更好,更有效率的運(yùn)行。根據(jù)本發(fā)明實(shí)施例的客戶端,基于已有的多進(jìn)程瀏覽器架構(gòu),并結(jié)合沙箱的安全隔離技木,很大強(qiáng)度的增強(qiáng)了用戶使用瀏覽器上網(wǎng)的安全性。并且將多進(jìn)程與沙箱與瀏覽 器本身的內(nèi)部機(jī)制和邏輯結(jié)合的十分緊密,因此能極大提高程序的運(yùn)行效率,用戶體驗(yàn)以及用戶效率。本發(fā)明的實(shí)施例具有如下優(yōu)點(diǎn)第一,本發(fā)明的實(shí)施例可以在用戶對目標(biāo)對象執(zhí)行操作之前,自動(dòng)判斷目標(biāo)對象的執(zhí)行是否需要導(dǎo)入沙箱,由此幫助用戶決定哪些有風(fēng)險(xiǎn)的程序需要在沙箱內(nèi)運(yùn)行。第二,本發(fā)明實(shí)施例的瀏覽器所使用的多進(jìn)程瀏覽器架構(gòu),保證系統(tǒng)安全性和健壯性的同時(shí)加強(qiáng)了架構(gòu)在沙箱中的應(yīng)用。第三,瀏覽器的沙箱是一直開啟,從而減少了判斷錯(cuò)誤的風(fēng)險(xiǎn),能更好的提高安全性。并且放入沙箱的進(jìn)程是有角色權(quán)限分級控制的,即每種類型的進(jìn)程放入具有不同權(quán)限的沙箱中,由此提升了系統(tǒng)的執(zhí)行效率。流程圖中或在此以其他方式描述的任何過程或方法描述可以被理解為,表示包括一個(gè)或更多個(gè)用于實(shí)現(xiàn)特定邏輯功能或過程的步驟的可執(zhí)行指令的代碼的模塊、片段或部分,并且本發(fā)明的優(yōu)選實(shí)施方式的范圍包括另外的實(shí)現(xiàn),其中可以不按所示出或討論的順序,包括根據(jù)所涉及的功能按基本同時(shí)的方式或按相反的順序,來執(zhí)行功能,這應(yīng)被本發(fā)明的實(shí)施例所屬技術(shù)領(lǐng)域的技術(shù)人員所理解。在流程圖中表示或在此以其他方式描述的邏輯和/或步驟,例如,可以被認(rèn)為是用于實(shí)現(xiàn)邏輯功能的可執(zhí)行指令的定序列表,可以具體實(shí)現(xiàn)在任何計(jì)算機(jī)可讀介質(zhì)中,以供指令執(zhí)行系統(tǒng)、裝置或設(shè)備(如基于計(jì)算機(jī)的系統(tǒng)、包括處理器的系統(tǒng)或其他可以從指令執(zhí)行系統(tǒng)、裝置或設(shè)備取指令并執(zhí)行指令的系統(tǒng))使用,或結(jié)合這些指令執(zhí)行系統(tǒng)、裝置或設(shè)備而使用。就本說明書而言,"計(jì)算機(jī)可讀介質(zhì)"可以是任何可以包含、存儲(chǔ)、通信、傳播或傳輸程序以供指令執(zhí)行系統(tǒng)、裝置或設(shè)備或結(jié)合這些指令執(zhí)行系統(tǒng)、裝置或設(shè)備而使用的裝置。計(jì)算機(jī)可讀介質(zhì)的更具體的示例(非窮盡性列表)包括以下具有一個(gè)或多個(gè)布線的電連接部(電子裝置),便攜式計(jì)算機(jī)盤盒(磁裝置),隨機(jī)存取存儲(chǔ)器(RAM),只讀存儲(chǔ)器(ROM),可擦除可編輯只讀存儲(chǔ)器(EPR0M或閃速存儲(chǔ)器),光纖裝置,以及便攜式光盤只讀存儲(chǔ)器(⑶ROM)。另外,計(jì)算機(jī)可讀介質(zhì)甚至可以是可在其上打印所述程序的紙或其他合適的介質(zhì),因?yàn)榭梢岳缤ㄟ^對紙或其他介質(zhì)進(jìn)行光學(xué)掃描,接著進(jìn)行編輯、解譯或必要時(shí)以其他合適方式進(jìn)行處理來以電子方式獲得所述程序,然后將其存儲(chǔ)在計(jì)算機(jī)存儲(chǔ)器中。
應(yīng)當(dāng)理解,本發(fā)明的各部分可以用硬件、軟件、固件或它們的組合來實(shí)現(xiàn)。在上述實(shí)施方式中,多個(gè)步驟或方法可以用存儲(chǔ)在存儲(chǔ)器中且由合適的指令執(zhí)行系統(tǒng)執(zhí)行的軟件或固件來實(shí)現(xiàn)。例如,如果用硬件來實(shí)現(xiàn),和在另ー實(shí)施方式中一祥,可用本領(lǐng)域公知的下列技術(shù)中的任一項(xiàng)或他們的組合來實(shí)現(xiàn)具有用于對數(shù)據(jù)信號實(shí)現(xiàn)邏輯功能的邏輯門電路的離散邏輯電路,具有合適的組合邏輯門電路的專用集成電路,可編程門陣列(PGA),現(xiàn)場可編程門陣列(FPGA)等。本技術(shù)領(lǐng)域的普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法攜帯的全部或部分步驟是可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲(chǔ)于ー種計(jì)算機(jī)可讀存儲(chǔ)介 質(zhì)中,該程序在執(zhí)行時(shí),包括方法實(shí)施例的步驟之一或其組合。此外,在本發(fā)明各個(gè)實(shí)施例中的各功能単元可以集成在ー個(gè)處理模塊中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)模塊中。上述集成的模塊既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能模塊的形式實(shí)現(xiàn)。所述集成的模塊如果以軟件功能模塊的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),也可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。上述提到的存儲(chǔ)介質(zhì)可以是只讀存儲(chǔ)器,磁盤或光盤等。在本說明書的描述中,參考術(shù)語“ー個(gè)實(shí)施例”、“一些實(shí)施例”、“示例”、“具體示例”、或“ー些示例”等的描述意指結(jié)合該實(shí)施例或示例描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)包含于本發(fā)明的至少ー個(gè)實(shí)施例或示例中。在本說明書中,對上述術(shù)語的示意性表述不一定指的是相同的實(shí)施例或示例。而且,描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)可以在任何的一個(gè)或多個(gè)實(shí)施例或示例中以合適的方式結(jié)合。盡管已經(jīng)示出和描述了本發(fā)明的實(shí)施例,對于本領(lǐng)域的普通技術(shù)人員而言,可以理解在不脫離本發(fā)明的原理和精神的情況下可以對這些實(shí)施例進(jìn)行多種變化、修改、替換和變型,本發(fā)明的范圍由所附權(quán)利要求及其等同限定。
權(quán)利要求
1.一種瀏覽器,其特征在于,包括 主進(jìn)程和多個(gè)子進(jìn)程,其中,所述多個(gè)子進(jìn)程由所述主進(jìn)程創(chuàng)建,且所述多個(gè)子進(jìn)程具有不同的權(quán)限。
2.如權(quán)利要求I所述的瀏覽器,其特征在于,所述主進(jìn)程的權(quán)限不高于資源管理器的默認(rèn)權(quán)限。
3.如權(quán)利要求I所述的瀏覽器,其特征在于,所述主進(jìn)程和所述多個(gè)子進(jìn)程的權(quán)限由控制策略進(jìn)行配置。
4.如權(quán)利要求I所述的瀏覽器,其特征在于,所述多個(gè)子進(jìn)程包括高權(quán)代理子進(jìn)程、瀏覽器應(yīng)用擴(kuò)展子進(jìn)程和至少一個(gè)渲染子進(jìn)程,其中,所述高權(quán)代理子進(jìn)程、瀏覽器應(yīng)用擴(kuò)展子進(jìn)程、至少一個(gè)渲染子進(jìn)程和所述主進(jìn)程之間具有不同的權(quán)限。
5.如權(quán)利要求I所述的瀏覽器,其特征在于,所述主進(jìn)程還用于對所述多個(gè)子進(jìn)程中的一個(gè)子進(jìn)程進(jìn)行提權(quán)操作。
6.如權(quán)利要求5所述的瀏覽器,其特征在于,所述主進(jìn)程接收所述多個(gè)子進(jìn)程中的一個(gè)子進(jìn)程的提權(quán)請求,由所述主進(jìn)程根據(jù)所述提權(quán)請求代理所述子進(jìn)程進(jìn)行操作,或者,由所述主進(jìn)程臨時(shí)調(diào)整所述子進(jìn)程的權(quán)限,并在所述子進(jìn)程執(zhí)行相應(yīng)操作之后恢復(fù)所述子進(jìn)程的權(quán)限。
7.如權(quán)利要求6所述的瀏覽器,其特征在于,所述子進(jìn)程在所述主進(jìn)程提權(quán)之后進(jìn)行讀寫操作、啟動(dòng)孫進(jìn)程操作或訪問SSL證書操作。
8.如權(quán)利要求1-7任一項(xiàng)所述的瀏覽器,其特征在于,所述子進(jìn)程或所述孫進(jìn)程具有限制的令牌Token/Job,所述Token/Job用于對所述子進(jìn)程或所述孫進(jìn)程的權(quán)限進(jìn)行限制。
9.如權(quán)利要求1-8任一項(xiàng)所述的瀏覽器,其特征在于,所述子進(jìn)程或所述孫進(jìn)程之中還包括鉤子Hook以攔截Windows API提供提權(quán)或虛擬化的功能,其中, 所述Hook提權(quán)功能用于在子進(jìn)程創(chuàng)建孫進(jìn)程時(shí)獲得所述子進(jìn)程或所述孫進(jìn)程的上下文,并根據(jù)所述上下文向所述主進(jìn)程發(fā)送提權(quán)請求或所述子進(jìn)程訪問SSL證書時(shí)將所述子進(jìn)程的Token切換到高權(quán)限的Token ; 所述Hook虛擬化功能用于在子進(jìn)程創(chuàng)建和寫入文件時(shí),將所述文件虛擬化到安全的目錄。
10.如權(quán)利要求1-9任一項(xiàng)所述的瀏覽器,其特征在于,所述至少一個(gè)渲染子進(jìn)程包括Webkit渲染內(nèi)核和/或IE渲染內(nèi)核,所述Webkit渲染內(nèi)核和/或IE渲染內(nèi)核中至少一個(gè)具有所述Token/Job以及所述Hook提權(quán)函數(shù)。
11.如權(quán)利要求4所述的瀏覽器,其特征在于,當(dāng)所述瀏覽器應(yīng)用擴(kuò)展子進(jìn)程和至少一個(gè)渲染子進(jìn)程處理對應(yīng)權(quán)限之外的操作時(shí),所述瀏覽器應(yīng)用擴(kuò)展子進(jìn)程和至少一個(gè)渲染子進(jìn)程向所述主進(jìn)程發(fā)送提權(quán)請求,所述主進(jìn)程根據(jù)所述瀏覽器應(yīng)用擴(kuò)展子進(jìn)程和至少一個(gè)渲染子進(jìn)程所對應(yīng)的權(quán)限判斷是否允許所述操作。
12.如權(quán)利要求4所述的瀏覽器,其特征在于,當(dāng)所述主進(jìn)程要安裝程序或插件時(shí),所述主進(jìn)程向所述高權(quán)代理子進(jìn)程發(fā)送通知,所述高權(quán)代理子進(jìn)程向用戶提示是否同意安裝所述程序或插件。
13.如權(quán)利要求4所述的瀏覽器,其特征在于,所述瀏覽器應(yīng)用擴(kuò)展子進(jìn)程和至少一個(gè)渲染子進(jìn)程具有至少一個(gè)Hook虛擬化函數(shù)以實(shí)現(xiàn)文件虛擬化。
14.如權(quán)利要求13所述的瀏覽器,其特征在于,當(dāng)所述至少一個(gè)渲染子進(jìn)程對網(wǎng)頁進(jìn)行文件創(chuàng)建或?qū)懭氩僮鲿r(shí),所述Hook虛擬化函數(shù)將所述網(wǎng)頁存儲(chǔ)至可寫的虛擬化目錄,并通知所述主進(jìn)程將所述網(wǎng)頁文件拷貝至用戶指定的目錄。
15.如權(quán)利要求4所述的瀏覽器,其特征在于,所述至少一個(gè)渲染子進(jìn)程具有Hook進(jìn)程啟動(dòng)函數(shù),當(dāng)所述至少一個(gè)渲染子進(jìn)程啟動(dòng)孫進(jìn)程時(shí),所述Hook進(jìn)程啟動(dòng)函數(shù)檢查子進(jìn)程文件,如果判斷所述孫進(jìn)程屬于預(yù)設(shè)的白名單,為所述孫進(jìn)程設(shè)置于所述主進(jìn)程相同的Token 和 Job。
16.如權(quán)利要求4所述的瀏覽器,其特征在于,當(dāng)所述至少一個(gè)渲染子進(jìn)程啟動(dòng)COM組件時(shí),如果判斷所述COM組件屬于預(yù)設(shè)的白名單,則所述至少一個(gè)渲染子進(jìn)程通知所述主進(jìn)程創(chuàng)建所述COM組件,在所述主進(jìn)程創(chuàng)建所述COM組件之后,將所述COM組件對應(yīng)的COM接口發(fā)送至所述至少一個(gè)渲染子進(jìn)程。
17.如權(quán)利要求4所述的瀏覽器,其特征在于,當(dāng)所述至少一個(gè)渲染子進(jìn)程打開受限對象的句柄時(shí),所述至少一個(gè)渲染子進(jìn)程通知所述主進(jìn)程,在所述主進(jìn)程打開所述句柄之后將打開的句柄復(fù)制至所述至少一個(gè)渲染子進(jìn)程。
18.—種客戶端,其特征在于,包括 Windows操作系統(tǒng);以及 如權(quán)利要求1-17任一項(xiàng)所述的瀏覽器。
19.如權(quán)利要求18所述的客戶端,其特征在于,所述Windows操作系統(tǒng)為所述主進(jìn)程、高權(quán)代理子進(jìn)程、瀏覽器應(yīng)用擴(kuò)展子進(jìn)程和至少一個(gè)渲染子進(jìn)程中的每一個(gè)建立對應(yīng)的沙箱,且所述沙箱具有不同的權(quán)限級別。
20.如權(quán)利要求19所述的客戶端,其特征在于,所述Windows操作系統(tǒng)通過安全描述符ACL安全檢查機(jī)制根據(jù)所述主進(jìn)程、高權(quán)代理子進(jìn)程、瀏覽器應(yīng)用擴(kuò)展子進(jìn)程和至少一個(gè)渲染子進(jìn)程所對應(yīng)的Token,對所述主進(jìn)程、高權(quán)代理子進(jìn)程、瀏覽器應(yīng)用擴(kuò)展子進(jìn)程和至少一個(gè)渲染子進(jìn)程進(jìn)行權(quán)限控制。
全文摘要
本發(fā)明提出了一種瀏覽器及客戶端,所述瀏覽器包括主進(jìn)程和多個(gè)子進(jìn)程,其中,所述多個(gè)子進(jìn)程由所述主進(jìn)程創(chuàng)建,且所述多個(gè)子進(jìn)程具有不同的權(quán)限。根據(jù)本發(fā)明的瀏覽器基于多進(jìn)程瀏覽器架構(gòu),通過對不同功能進(jìn)程的權(quán)限控制,增強(qiáng)了用戶使用瀏覽器上網(wǎng)的安全性。且進(jìn)程間通過主進(jìn)程的調(diào)度和控制,與瀏覽器本身的內(nèi)部機(jī)制和邏輯結(jié)合緊密,提高了程序的運(yùn)行效率,用戶體驗(yàn)以及用戶效率。
文檔編號H04L29/08GK102663318SQ20121007848
公開日2012年9月12日 申請日期2012年3月22日 優(yōu)先權(quán)日2012年3月22日
發(fā)明者賓彬, 熊新星 申請人:百度在線網(wǎng)絡(luò)技術(shù)(北京)有限公司