專利名稱:一種用于瀏覽器的插件調(diào)用方法和插件管理器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)領(lǐng)域,具體涉及一種用于瀏覽器的插件調(diào)用方法和插件管理器。
背景技術(shù):
插件是一種遵循一定規(guī)范的應(yīng)用程序接口編寫出來(lái)的程序。很多軟件都有插件, 插件有無(wú)數(shù)種。例如在IE瀏覽器中,安裝相關(guān)的插件后,瀏覽器能夠直接調(diào)用插件程序,用于處理特定類型的文件。插件是會(huì)隨著IE瀏覽器的啟動(dòng)而自動(dòng)執(zhí)行的程序。IE瀏覽器常見(jiàn)的插件有Flash插件、RealPlayer插件、MMS插件、MIDI五線譜插件、ActiveX插件等等。 再比如Winamp的DFX,也是插件。
圖I示出了現(xiàn)有技術(shù)中一種瀏覽器與插件交互工作的示意圖。如圖I所示,瀏覽器包含插件管理器,該插件管理器用于在主程序和插件之間提供各種接口,使得插件和瀏覽器之間得以交互工作。進(jìn)而,插件根據(jù)自身的需求可以調(diào)用本地資源,例如進(jìn)行文件的讀 /寫、文件的上傳/下載、配置文件的操作等等。在該技術(shù)方案中,插件直接對(duì)本地資源進(jìn)行操作,由此會(huì)帶來(lái)不安全的隱患。具體來(lái)說(shuō),有些插件能夠幫助用戶更方便瀏覽互聯(lián)網(wǎng)或調(diào)用上網(wǎng)輔助功能,這類插件屬于正常程序;但也有部分插件被人稱為廣告軟件(Adware)或間諜軟件(Spyware),這類插件為惡意插件,它監(jiān)視用戶的上網(wǎng)行為,并把所記錄的數(shù)據(jù)報(bào)告給插件的創(chuàng)建者,以達(dá)到投放廣告、盜取游戲或銀行帳號(hào)密碼等非法目的。因?yàn)椴寮刹煌陌l(fā)行商發(fā)行,其技術(shù)水平也良莠不齊,插件程序很可能與其它運(yùn)行中的程序發(fā)生沖突, 從而導(dǎo)致諸如各種頁(yè)面錯(cuò)誤,運(yùn)行時(shí)間錯(cuò)誤等等現(xiàn)象,阻塞了正常瀏覽。另一方面,讀/寫、 上傳/下載文件的執(zhí)行速度較慢,會(huì)使線程出現(xiàn)卡、慢等現(xiàn)象,降低整個(gè)插件運(yùn)行速度和效率。發(fā)明內(nèi)容
鑒于上述問(wèn)題,提出了本發(fā)明以便提供一種克服上述問(wèn)題或者至少部分地解決上述問(wèn)題的用于瀏覽器的插件調(diào)用方法和相應(yīng)的插件管理器、瀏覽器。
根據(jù)本發(fā)明的一個(gè)方面,提供了一種用于瀏覽器的插件調(diào)用方法,包括
導(dǎo)入步驟,在瀏覽器調(diào)用插件時(shí),攔截插件中涉及輸入/輸出操作的行為,將所述行為導(dǎo)入到輸入/輸出器中,所述輸入/輸出器維護(hù)有操作權(quán)限列表;
第一輸入/輸出操作步驟,所述輸入/輸出器根據(jù)所述操作權(quán)限列表,判定所述插件是否具有執(zhí)行所述輸入/輸出操作的權(quán)限;若判定出所述插件具有執(zhí)行所述輸入/輸出操作的權(quán)限,則由所述輸入/輸出器執(zhí)行所述輸入/輸出操作;若判定出所述插件不具有執(zhí)行所述輸入/輸出操作的權(quán)限,禁止執(zhí)行所述輸入/輸出操作。
根據(jù)本發(fā)明的另一方面,提供了一種插件管理器,適于調(diào)用插件,并將涉及輸入/ 輸出操作的行為導(dǎo)入到輸入/輸出器中;并且
所述插件管理器包括輸入/輸出器,所述輸入/輸出器包括第一輸入/輸出操作模塊,所述第一輸入/輸出操作模塊適于根據(jù)所述輸入/輸出器維護(hù)的操作權(quán)限列表,判定所述插件是否具有執(zhí)行所述輸入/輸出操作的權(quán)限;若判定出所述插件具有執(zhí)行所述輸入 /輸出操作的權(quán)限,則執(zhí)行所述輸入/輸出操作;若判定出所述插件不具有執(zhí)行所述輸入/ 輸出操作的權(quán)限,禁止執(zhí)行所述輸入/輸出操作;
所述插件管理器攔截所調(diào)用的插件中涉及輸入/輸出操作的行為,將所述行為導(dǎo)入到所述輸入/輸出器中。
根據(jù)本發(fā)明提供的技術(shù)方案,在瀏覽器調(diào)用插件時(shí),將插件中的i/o操作的行為導(dǎo)入到單獨(dú)的I/o器中,I/O器根據(jù)其維護(hù)的操作權(quán)限列表,判定插件是否具有執(zhí)行該I/O 操作的權(quán)限,在具有該權(quán)限的情況下由I/o器執(zhí)行I/O操作,否則禁止執(zhí)行該I/O操作。本發(fā)明利用I/o器對(duì)插件對(duì)本地資源的I/O操作進(jìn)行控制,防止插件帶來(lái)的安全隱患。而且, 本發(fā)明將速度較慢的I/o操作從其它線程中獨(dú)立出來(lái)由I/O器執(zhí)行,不會(huì)影響插件其它功能的運(yùn)行速度,提聞了插件的執(zhí)行效率。
上述說(shuō)明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段, 而可依照說(shuō)明書(shū)的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的具體實(shí)施方式
。
通過(guò)閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對(duì)于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對(duì)本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號(hào)表示相同的部件。在附圖中
圖I示出了現(xiàn)有技術(shù)中一種瀏覽器與插件交互工作的示意圖2示出了另一種瀏覽器與插件交互工作的示意圖3示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的用于瀏覽器的插件調(diào)用方法的流程圖4示出了根據(jù)本發(fā)明另一個(gè)實(shí)施例的用于瀏覽器的插件調(diào)用方法的流程圖5示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的插件管理器的結(jié)構(gòu)示意圖6示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的瀏覽器的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將參照附圖更詳細(xì)地描述本公開(kāi)的示例性實(shí)施例。雖然附圖中顯示了本公開(kāi)的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開(kāi)而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開(kāi),并且能夠?qū)⒈竟_(kāi)的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
圖2示出了另一種瀏覽器與插件交互工作的示意圖。如圖2所示,將插件分為可信任插件和不可信任插件。具體來(lái)說(shuō),可信任插件是經(jīng)過(guò)瀏覽器安全認(rèn)證的插件,例如瀏覽器廠商自己開(kāi)發(fā)的插件;而不可信任插件是未經(jīng)過(guò)瀏覽器安全認(rèn)證的插件,例如第三方開(kāi)發(fā)的插件等。插件管理器可以分別對(duì)這兩種插件進(jìn)行管理,并且不同類型的插件在不同的線程中運(yùn)行。具體來(lái)說(shuō),可信任插件在主線程中運(yùn)行,而不可信任插件在子線程中執(zhí)行。在這種技術(shù)方案中,對(duì)于插件的安全性進(jìn)行了區(qū)分,但是仍然不能防范不可信任插件的安全隱患以及由于讀/寫、上傳/下載文件的速度慢導(dǎo)致插件運(yùn)行速度慢的問(wèn)題。
圖3示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的用于瀏覽器的插件調(diào)用方法100的流程圖。 如圖3所示,方法100始于步驟S101,該步驟SlOl為導(dǎo)入步驟,其中在瀏覽器調(diào)用插件時(shí), 將插件中涉及輸入/輸出(以下簡(jiǎn)稱1/0)操作的行為導(dǎo)入到I/O器中,該I/O器維護(hù)有操作權(quán)限列表。在本方法中,瀏覽器的插件管理器提供對(duì)于插件的接口,在瀏覽器調(diào)用插件時(shí),插件管理器將插件中涉及I/o操作的行為導(dǎo)入到I/O器中來(lái)統(tǒng)一處理。I/O器是插件管理器中一個(gè)獨(dú)立的功能模塊,它對(duì)插件對(duì)本地資源的操作進(jìn)行控制,防止插件帶來(lái)的安全隱患??蛇x地,插件管理器對(duì)插件中涉及I/o操作的行為進(jìn)行攔截,將該行為導(dǎo)入到I/O器中來(lái)處理。在I/o器中維護(hù)有操作權(quán)限列表,可選地,操作權(quán)限列表記錄了危險(xiǎn)函數(shù)與可調(diào)用該危險(xiǎn)函數(shù)的插件的對(duì)應(yīng)關(guān)系,其中危險(xiǎn)函數(shù)是與I/o操作有關(guān)的函數(shù)。
隨后,方法100進(jìn)入步驟S102,其中I/O器根據(jù)操作權(quán)限列表,判定插件是否具有執(zhí)行I/o操作的權(quán)限,若是,執(zhí)行步驟S103 ;否則執(zhí)行步驟S104。I/O器獲取與導(dǎo)入的I/O 操作有關(guān)的危險(xiǎn)函數(shù),查詢操作權(quán)限列表,獲得可調(diào)用該危險(xiǎn)函數(shù)的插件,I/O器判斷插件是否屬于可調(diào)用該危險(xiǎn)函數(shù)的插件的范圍,若屬于,表明插件具有執(zhí)行I/O操作的權(quán)限;若不屬于,表明插件不具有執(zhí)行I/O操作的權(quán)限。應(yīng)當(dāng)理解的是,本發(fā)明的操作權(quán)限列表不僅限于記錄危險(xiǎn)函數(shù)與可調(diào)用該危險(xiǎn)函數(shù)的插件的對(duì)應(yīng)關(guān)系,也可以是記錄其它形式的操作權(quán)限,例如直接記錄插件與允許該插件所執(zhí)行的I/o操作,或者記錄危險(xiǎn)函數(shù)與不可調(diào)用該危險(xiǎn)函數(shù)的插件的對(duì)應(yīng)關(guān)系。對(duì)應(yīng)的,步驟S102的具體執(zhí)行方式也隨之調(diào)整,本發(fā)明對(duì)此不做限制。
在步驟S103中,I/O器執(zhí)行I/O操作。I/O器判定插件具有執(zhí)行I/O操作的權(quán)限, 由I/o器進(jìn)行對(duì)本地資源的讀/寫操作或上傳/下載操作。
在步驟S104中,I/O器禁止執(zhí)行I/O操作。I/O器判定插件不具有執(zhí)行I/O操作的權(quán)限,禁止執(zhí)行I/o操作。
在本文中,上述步驟S102、步驟S103和步驟S104被稱為第一 I/O操作步驟。
根據(jù)本實(shí)施例提供的用于瀏覽器的插件調(diào)用方法,在瀏覽器調(diào)用插件時(shí),將插件中的I/O操作的行為導(dǎo)入到單獨(dú)的I/O器中,I/O器根據(jù)其維護(hù)的操作權(quán)限列表,判定插件是否具有執(zhí)行該I/o操作的權(quán)限,在具有該權(quán)限的情況下由I/O器執(zhí)行I/O操作,否則禁止執(zhí)行該I/o操作。本方法利用I/O器對(duì)插件對(duì)本地資源的I/O操作進(jìn)行控制,防止插件帶來(lái)的安全隱患。而且,本方法將速度較慢的I/o操作從其它線程中獨(dú)立出來(lái)由I/O器執(zhí)行, 不會(huì)影響插件其它功能的運(yùn)行速度,提高了插件的執(zhí)行效率。
圖4示出了根據(jù)本發(fā)明另一個(gè)實(shí)施例的用于瀏覽器的插件調(diào)用方法200的流程圖。在方法200中將插件分為可信任插件和不可信任插件做不同的處理。如圖4所示,方法200始于步驟S201,該步驟S201為判定步驟,其中瀏覽器的插件管理器判定插件是否為不可信任插件,若是,執(zhí)行步驟S203 ;否則,執(zhí)行步驟S202。在本方法中,瀏覽器的插件管理器提供對(duì)于可信任插件和不可信任插件的接口,該插件管理器中維護(hù)有可信任插件的列表和/或不可信任插件的列表。在瀏覽器調(diào)用插件時(shí),插件管理器根據(jù)可信任插件的列表和 /或不可信任插件的列表判定插件是可信任插件或不可信任插件,如果是可信任插件,則執(zhí)行步驟S202 ;如果是不可信任插件,則執(zhí)行步驟S203。
在步驟S202中,在主線程中運(yùn)行可信任插件。
在步驟S203中,在子線程中運(yùn)行不可信任插件。
在步驟S202和步驟S203的執(zhí)行過(guò)程中,方法200進(jìn)入步驟S204,其中插件管理器將可信任插件和/或不可信任插件的涉及I/o操作的行為導(dǎo)入到I/O器中。I/O器是插件管理器中一個(gè)獨(dú)立的功能模塊,具體地,I/o器在單獨(dú)的I/O線程中運(yùn)行??蛇x地,插件管理器對(duì)可信任插件和/或不可信任插件中涉及I/o操作的行為進(jìn)行攔截,將該行為導(dǎo)入到 I/o器中來(lái)處理。
可選地,I/O器向所有插件的I/O操作提供統(tǒng)一的I/O接口。在開(kāi)發(fā)插件時(shí),開(kāi)發(fā)人員就要注意插件要進(jìn)行的I/o操作必須調(diào)用該統(tǒng)一 I/O接口。如果I/O器攔截到插件未調(diào)用該統(tǒng)一 I/o接口而進(jìn)行的I/O操作,則禁止執(zhí)行I/O操作,具體執(zhí)行過(guò)程參見(jiàn)步驟S205。 應(yīng)當(dāng)理解的是,步驟S205為可選步驟,當(dāng)沒(méi)有要求插件的I/O操作必須調(diào)用統(tǒng)一 I/O接口時(shí),本方法不包括步驟S205。
在步驟S204之后,方法200進(jìn)入步驟S205,I/O器判斷插件的I/O操作調(diào)用的是否為統(tǒng)一的I/o接口,若是,執(zhí)行步驟S206,否則,執(zhí)行步驟S208。
在步驟S206中,I/O器查詢插件管理器進(jìn)行判斷得到的插件是可信任插件或不可信任插件的結(jié)果,若插件為不可信任插件,執(zhí)行步驟S207 ;若插件為可信任插件,執(zhí)行步驟 S209。
在步驟S207中,I/O器根據(jù)操作權(quán)限列表,判定不可信任插件是否具有執(zhí)行I/O操作的權(quán)限,若是,執(zhí)行步驟209 ;否則執(zhí)行步驟208。在I/O器中維護(hù)有操作權(quán)限列表,該操作權(quán)限列表可以是以數(shù)據(jù)文件的形式在瀏覽器進(jìn)行安裝時(shí)被拷貝在指定的安裝目錄下。例如,操作權(quán)限列表可以為.dat格式,經(jīng)過(guò)加密后被分發(fā)給瀏覽器。
可選地,操作權(quán)限列表記錄了危險(xiǎn)函數(shù)與可調(diào)用該危險(xiǎn)函數(shù)的插件的對(duì)應(yīng)關(guān)系, 其中危險(xiǎn)函數(shù)是與I/o操作有關(guān)的函數(shù)。表I示出了操作權(quán)限列表的一種示例。
表I.操作權(quán)限列表
權(quán)利要求
1.一種用于瀏覽器的插件調(diào)用方法,包括導(dǎo)入步驟,在瀏覽器調(diào)用插件時(shí),攔截插件中涉及輸入/輸出操作的行為,將所述行為導(dǎo)入到輸入/輸出器中,所述輸入/輸出器維護(hù)有操作權(quán)限列表;第一輸入/輸出操作步驟,所述輸入/輸出器根據(jù)所述操作權(quán)限列表,判定所述插件是否具有執(zhí)行所述輸入/輸出操作的權(quán)限;若判定出所述插件具有執(zhí)行所述輸入/輸出操作的權(quán)限,則由所述輸入/輸出器執(zhí)行所述輸入/輸出操作;若判定出所述插件不具有執(zhí)行所述輸入/輸出操作的權(quán)限,禁止執(zhí)行所述輸入/輸出操作。
2.根據(jù)權(quán)利要求I所述的方法,在所述導(dǎo)入步驟之前還包括判定步驟,所述瀏覽器判定所述插件是可信任插件或不可信任插件;若所述瀏覽器判定所述插件是不可信任插件,所述方法執(zhí)行所述導(dǎo)入步驟和第一輸入 /輸出操作步驟;若所述瀏覽器判定所述插件為可信任插件,所述方法執(zhí)行所述導(dǎo)入步驟和第二輸入/ 輸出操作步驟,所述第二輸入/輸出操作步驟具體為所述輸入/輸出器直接執(zhí)行所述輸入/輸出操作。
3.根據(jù)權(quán)利要求2所述的方法,所述輸入/輸出器向所有插件的輸入/輸出操作提供統(tǒng)一的輸入/輸出接口;在所述第一輸入/輸出操作步驟或第二輸入/輸出操作步驟之前,所述方法還包括判斷所述插件的輸入/輸出操作調(diào)用的是否為所述統(tǒng)一的輸入/輸出接口,若是,則執(zhí)行所述第一輸入/輸出操作步驟或第二輸入/輸出操作步驟;否則,所述輸入/輸出器禁止執(zhí)行所述輸入/輸出操作。
4.根據(jù)權(quán)利要求2或3所述的方法,所述可信任插件在主線程中運(yùn)行,所述不可信任插件在子線程中運(yùn)行,所述輸入/輸出器在單獨(dú)的輸入/輸出線程中運(yùn)行。
5.根據(jù)權(quán)利要求I至4任一項(xiàng)所述的方法,所述操作權(quán)限列表記錄了危險(xiǎn)函數(shù)與可調(diào)用該危險(xiǎn)函數(shù)的插件的對(duì)應(yīng)關(guān)系,所述危險(xiǎn)函數(shù)是與輸入/輸出操作有關(guān)的函數(shù)。
6.一種插件管理器,適于調(diào)用插件,并將涉及輸入/輸出操作的行為導(dǎo)入到輸入/輸出器中;并且所述插件管理器包括輸入/輸出器,所述輸入/輸出器包括第一輸入/輸出操作模塊, 所述第一輸入/輸出操作模塊適于根據(jù)所述輸入/輸出器維護(hù)的操作權(quán)限列表,判定所述插件是否具有執(zhí)行所述輸入/輸出操作的權(quán)限;若判定出所述插件具有執(zhí)行所述輸入/輸出操作的權(quán)限,則執(zhí)行所述輸入/輸出操作;若判定出所述插件不具有執(zhí)行所述輸入/輸出操作的權(quán)限,禁止執(zhí)行所述輸入/輸出操作;所述插件管理器攔截所調(diào)用的插件中涉及輸入/輸出操作的行為,將所述行為導(dǎo)入到所述輸入/輸出器中。
7.根據(jù)權(quán)利要求6所述的插件管理器,所述插件管理器還適于判定所述插件是可信任插件或不可信任插件;所述第一輸入/輸出操作模塊具體適于處理不可信任插件的輸入/輸出操作;所述輸入/輸出器還包括第二輸入/輸出操作模塊,所述第二輸入/輸出操作模塊適于處理可信任插件的輸入/輸出操作;所述第二輸入/輸出操作模塊具體適于直接執(zhí)行所述可信任插件的輸入/輸出操作。
8.根據(jù)權(quán)利要求7所述的插件管理器,所述輸入/輸出器向所有插件的輸入/輸出操作提供統(tǒng)一的輸入/輸出接口 ;所述輸入/輸出器還包括判斷模塊,適于判斷所述插件的輸入/輸出操作調(diào)用的是否為所述統(tǒng)一的輸入/輸出接口 ;第三輸入/輸出操作模塊,適于在所述判斷模塊判斷出所述插件的輸入/輸出操作調(diào)用的是所述統(tǒng)一的輸入/輸出接口的情況下,觸發(fā)所述第一輸入/輸出操作模塊或所述第二輸入/輸出操作模塊工作;在所述判斷模塊判斷出所述插件的輸入/輸出操作調(diào)用的不是所述統(tǒng)一的輸入/輸出接口的情況下,禁止執(zhí)行所述輸入/輸出操作。
9.根據(jù)權(quán)利要求7或8所述的插件管理器,所述可信任插件在主線程中運(yùn)行,所述不可信任插件在子線程中運(yùn)行,所述輸入/輸出器在單獨(dú)的輸入/輸出線程中運(yùn)行。
10.根據(jù)權(quán)利要求6至9任一項(xiàng)所述的插件管理器,所述操作權(quán)限列表記錄了危險(xiǎn)函數(shù)與可調(diào)用該危險(xiǎn)函數(shù)的插件的對(duì)應(yīng)關(guān)系,所述危險(xiǎn)函數(shù)是與輸入/輸出操作有關(guān)的函數(shù)。
全文摘要
本發(fā)明公開(kāi)了一種用于瀏覽器的插件調(diào)用方法和插件管理器。其中插件管理器包括輸入/輸出器,其包括第一輸入/輸出操作模塊,所述第一輸入/輸出操作模塊適于根據(jù)所述輸入/輸出器維護(hù)的操作權(quán)限列表,判定所述插件是否具有執(zhí)行所述輸入/輸出操作的權(quán)限;若判定出所述插件具有執(zhí)行所述輸入/輸出操作的權(quán)限,則執(zhí)行所述輸入/輸出操作;若判定出所述插件不具有執(zhí)行所述輸入/輸出操作的權(quán)限,禁止執(zhí)行所述輸入/輸出操作;所述插件管理器攔截所調(diào)用的插件中涉及輸入/輸出操作的行為,將所述行為導(dǎo)入到所述輸入/輸出器中。本發(fā)明能夠防止插件帶來(lái)的安全隱患,而且,還不會(huì)影響插件其它功能的運(yùn)行速度,提高了插件的執(zhí)行效率。
文檔編號(hào)G06F21/52GK102938037SQ20121048768
公開(kāi)日2013年2月20日 申請(qǐng)日期2012年11月26日 優(yōu)先權(quán)日2012年11月26日
發(fā)明者段培堃, 杭程, 任寰 申請(qǐng)人:北京奇虎科技有限公司, 奇智軟件(北京)有限公司