網(wǎng)頁(yè)劫持的檢測(cè)方法和裝置制造方法
【專利摘要】本發(fā)明提供了一種網(wǎng)頁(yè)劫持的檢測(cè)方法和裝置。該方法包括:接收用戶對(duì)指定網(wǎng)站的訪問(wèn)請(qǐng)求;獲取瀏覽器在對(duì)指定網(wǎng)站的訪問(wèn)過(guò)程中,瀏覽器所執(zhí)行的代碼特征,以及觸發(fā)的指定事件;根據(jù)代碼特征和觸發(fā)的指定事件確定是否發(fā)生網(wǎng)頁(yè)劫持。通過(guò)本發(fā)明,可以解決目前無(wú)法判斷網(wǎng)頁(yè)是否發(fā)生劫持的問(wèn)題,以便于對(duì)網(wǎng)頁(yè)劫持的問(wèn)題進(jìn)行防范、處理,并可給予用戶提示,增強(qiáng)了用戶在瀏覽網(wǎng)頁(yè)過(guò)程中的安全性。
【專利說(shuō)明】網(wǎng)頁(yè)劫持的檢測(cè)方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)【技術(shù)領(lǐng)域】,特別是涉及一種網(wǎng)頁(yè)劫持的檢測(cè)方法和裝置。
【背景技術(shù)】
[0002]隨著互聯(lián)網(wǎng)的發(fā)展,網(wǎng)站宣傳已經(jīng)變得越來(lái)越重要。在目前情況下,出于競(jìng)爭(zhēng)的目的或惡意程序,經(jīng)常會(huì)導(dǎo)致用戶的訪問(wèn)的網(wǎng)站發(fā)生網(wǎng)頁(yè)劫持的情況。
[0003]例如,一些惡意網(wǎng)站對(duì)正常的網(wǎng)絡(luò)請(qǐng)求進(jìn)行劫持或重定向,用戶在地址欄直接輸入了 A網(wǎng)站的URL(Uniform Resource Locator,統(tǒng)一資源定位符),點(diǎn)擊確認(rèn)后直接跳到了B網(wǎng)站的頁(yè)面。
[0004]用戶登錄網(wǎng)上商城購(gòu)買物品時(shí),通過(guò)預(yù)先開(kāi)通的網(wǎng)絡(luò)銀行進(jìn)行網(wǎng)上轉(zhuǎn)賬支付。在通過(guò)網(wǎng)絡(luò)銀行支付的過(guò)程中,用戶需要輸入銀行卡賬號(hào)和預(yù)先設(shè)置的密碼,因此保護(hù)網(wǎng)絡(luò)支付的安全性至關(guān)重要。當(dāng)用戶在網(wǎng)頁(yè)上點(diǎn)擊支付按鈕時(shí),可能進(jìn)入的支付頁(yè)面是惡意網(wǎng)站預(yù)先設(shè)置好的,與正常支付網(wǎng)頁(yè)相似,一旦用戶在惡意網(wǎng)頁(yè)上輸入了用戶名和密碼,出現(xiàn)惡意的扣費(fèi),或者是網(wǎng)購(gòu)受騙等現(xiàn)象。
[0005]但是,除了用戶自主發(fā)現(xiàn),目前并沒(méi)有一種有效的辦法能夠自動(dòng)檢測(cè)用戶訪問(wèn)的網(wǎng)站是否發(fā)生了網(wǎng)頁(yè)劫持,網(wǎng)頁(yè)劫持使得用戶可能進(jìn)入虛假或不安全頁(yè)面,導(dǎo)致用戶遭受經(jīng)濟(jì)損失、密碼泄露等。
【發(fā)明內(nèi)容】
[0006]鑒于上述問(wèn)題,提出了本發(fā)明以便提供一種克服上述問(wèn)題或者至少部分地解決上述問(wèn)題的適于網(wǎng)頁(yè)劫持的檢測(cè)`方法和相應(yīng)地裝置。
[0007]依據(jù)本發(fā)明的一個(gè)方面,提供一種網(wǎng)頁(yè)劫持的檢測(cè)方法,包括:
[0008]接收用戶對(duì)指定網(wǎng)站的訪問(wèn)請(qǐng)求;
[0009]獲取瀏覽器在對(duì)指定網(wǎng)站的訪問(wèn)過(guò)程中,瀏覽器所執(zhí)行的代碼特征,以及觸發(fā)的指定事件;
[0010]根據(jù)代碼特征和觸發(fā)的指定事件確定是否發(fā)生網(wǎng)頁(yè)劫持。
[0011]可選地,指定事件為瀏覽器在訪問(wèn)指定網(wǎng)站的過(guò)程中,瀏覽器輔助對(duì)象BHO機(jī)制所提供的第一事件。
[0012]可選地,第一事件為BeforeNavigate〗事件。
[0013]可選地,獲取瀏覽器在對(duì)指定網(wǎng)站的訪問(wèn)過(guò)程中,瀏覽器所執(zhí)行的代碼特征,包括:
[0014]獲取觸發(fā)第一事件之前瀏覽器調(diào)用的帶有標(biāo)記的指定函數(shù)。
[0015]可選地,根據(jù)代碼特征和觸發(fā)的指定事件確定是否發(fā)生網(wǎng)頁(yè)劫持,包括:
[0016]當(dāng)帶有標(biāo)記的指定函數(shù)為第一函數(shù)時(shí),判定發(fā)生網(wǎng)頁(yè)劫持,且發(fā)生網(wǎng)頁(yè)劫持所使用的跳轉(zhuǎn)形式為通過(guò)meta協(xié)議跳轉(zhuǎn);
[0017]其中,第一函數(shù)為瀏覽器調(diào)用meta協(xié)議時(shí)必須調(diào)用的函數(shù)。[0018]可選地,在觸發(fā)第一事件之前,還包括:
[0019]調(diào)用第一函數(shù),并為第一函數(shù)設(shè)置標(biāo)記。
[0020]可選地,在判定發(fā)生網(wǎng)頁(yè)劫持,且發(fā)生網(wǎng)頁(yè)劫持所使用的跳轉(zhuǎn)形式為通過(guò)meta協(xié)議跳轉(zhuǎn)之后,還包括:
[0021]去除第一函數(shù)的標(biāo)記。
[0022]可選地,根據(jù)代碼特征和觸發(fā)的指定事件確定是否發(fā)生網(wǎng)頁(yè)劫持,包括:
[0023]當(dāng)帶有標(biāo)記的指定函數(shù)為第二函數(shù)時(shí),判定發(fā)生網(wǎng)頁(yè)劫持,且發(fā)生網(wǎng)頁(yè)劫持所使用的跳轉(zhuǎn)形式為通過(guò)jscript跳轉(zhuǎn);
[0024]其中,第二函數(shù)為瀏覽器運(yùn)行jscript時(shí)必須調(diào)用的函數(shù)。
[0025]可選地,在觸發(fā)第一事件之前,還包括:
[0026]觸發(fā)第二函數(shù);
[0027]檢查第二函數(shù)是否由瀏覽器的jscript模塊調(diào)用;
[0028]當(dāng)?shù)诙瘮?shù)是由瀏覽器的jscript模塊調(diào)用時(shí),為第二函數(shù)設(shè)置標(biāo)記。
[0029]可選地,在判定發(fā)生網(wǎng)頁(yè)劫持,且發(fā)生網(wǎng)頁(yè)劫持所使用的跳轉(zhuǎn)形式為通過(guò)jscript跳轉(zhuǎn)之后,還包括:
[0030]去除第二函數(shù)的標(biāo)記。
[0031]可選地,獲取瀏覽器在對(duì)指定網(wǎng)站的訪問(wèn)過(guò)程中,瀏覽器所執(zhí)行的代碼特征,以及觸發(fā)的指定事件,包括:
[0032]獲取瀏覽器在對(duì)指定網(wǎng)站的訪問(wèn)過(guò)程中,通過(guò)BHO機(jī)制觸發(fā)的連續(xù)的第一事件和
第二事件;
[0033]其中,第一事件為BeforeNavigate2 事件,第二事件為 NavigateComplete2 事件。
[0034]可選地,根據(jù)代碼特征和觸發(fā)的指定事件確定是否發(fā)生網(wǎng)頁(yè)劫持,包括:
[0035]獲取與第一事件和第二事件對(duì)應(yīng)的網(wǎng)址;
[0036]判斷與第一事件和第二事件對(duì)應(yīng)的網(wǎng)址是否相同;
[0037]當(dāng)?shù)谝皇录偷诙录?duì)應(yīng)的網(wǎng)址不相同時(shí),則判定指定網(wǎng)站發(fā)生網(wǎng)頁(yè)劫持,且發(fā)生網(wǎng)頁(yè)劫持所使用的跳轉(zhuǎn)形式為通過(guò)http協(xié)議跳轉(zhuǎn)。
[0038]可選地,在根據(jù)代碼特征和觸發(fā)的指定事件確定是否發(fā)生網(wǎng)頁(yè)劫持之后,還包括:
[0039]檢測(cè)返回的數(shù)據(jù)包中是否包含約定的元素;
[0040]當(dāng)不包含約定的元素時(shí),向服務(wù)器發(fā)送指定網(wǎng)站發(fā)生跳轉(zhuǎn)的通知,通知用于服務(wù)器對(duì)互聯(lián)網(wǎng)中存在跳轉(zhuǎn)的網(wǎng)站進(jìn)行統(tǒng)計(jì)。
[0041]可選地,當(dāng)指定網(wǎng)站發(fā)生網(wǎng)頁(yè)劫持時(shí),還包括:
[0042]檢測(cè)本地是否保存有指定網(wǎng)站的文件;
[0043]當(dāng)本地保存有指定網(wǎng)站的文件時(shí),將本地保存的指定網(wǎng)站的文件直接加載到瀏覽器中進(jìn)行顯示。
[0044]可選地,當(dāng)指定網(wǎng)站發(fā)生網(wǎng)頁(yè)劫持時(shí),還包括:
[0045]獲取跳轉(zhuǎn)后的網(wǎng)頁(yè)的跳轉(zhuǎn)網(wǎng)址;
[0046]判斷跳轉(zhuǎn)網(wǎng)址是否在服務(wù)器推送的白名單中;
[0047]若在白名單中,則允許網(wǎng)頁(yè)的跳轉(zhuǎn);[0048]若不在白名單中,則禁止加載跳轉(zhuǎn)后的網(wǎng)頁(yè)。
[0049]依據(jù)本發(fā)明的一個(gè)方面,還提供了一種網(wǎng)頁(yè)劫持的檢測(cè)裝置,包括:
[0050]請(qǐng)求接收模塊,配置為接收用戶對(duì)指定網(wǎng)站的訪問(wèn)請(qǐng)求;
[0051]事件獲取模塊,配置為獲取瀏覽器在對(duì)指定網(wǎng)站的訪問(wèn)過(guò)程中,瀏覽器所執(zhí)行的代碼特征,以及觸發(fā)的指定事件;
[0052]劫持判定模塊,配置為根據(jù)代碼特征和觸發(fā)的指定事件確定是否發(fā)生網(wǎng)頁(yè)劫持。 [0053]可選地,指定事件為瀏覽器在訪問(wèn)指定網(wǎng)站的過(guò)程中,瀏覽器輔助對(duì)象BHO機(jī)制所提供的第一事件。
[0054]可選地,第一事件為BeforeNavigate〗事件。
[0055]可選地,事件獲取模塊配置為獲取觸發(fā)第一事件之前瀏覽器調(diào)用的帶有標(biāo)記的指定函數(shù)。
[0056]可選地,劫持判定模塊配置為當(dāng)帶有標(biāo)記的指定函數(shù)為第一函數(shù)時(shí),判定發(fā)生網(wǎng)頁(yè)劫持,且發(fā)生網(wǎng)頁(yè)劫持所使用的跳轉(zhuǎn)形式為通過(guò)meta協(xié)議跳轉(zhuǎn);
[0057]其中,第一函數(shù)為瀏覽器調(diào)用meta協(xié)議時(shí)必須調(diào)用的函數(shù)。
[0058]可選地,該裝置還包括:
[0059]第一標(biāo)記設(shè)置模塊,配置為在觸發(fā)第一事件之前,調(diào)用第一函數(shù),并為第一函數(shù)設(shè)置標(biāo)記。
[0060]可選地,該裝置還包括:
[0061]第一標(biāo)記去除模塊,配置為在劫持判定模塊判定發(fā)生網(wǎng)頁(yè)劫持,且發(fā)生網(wǎng)頁(yè)劫持所使用的跳轉(zhuǎn)形式為通過(guò)meta協(xié)議跳轉(zhuǎn)之后,去除第一函數(shù)的標(biāo)記。
[0062]可選地,劫持判定模塊配置為當(dāng)帶有標(biāo)記的指定函數(shù)為第二函數(shù)時(shí),判定發(fā)生網(wǎng)頁(yè)劫持,且發(fā)生網(wǎng)頁(yè)劫持所使用的跳轉(zhuǎn)形式為通過(guò)jscript跳轉(zhuǎn);
[0063]其中,第二函數(shù)為瀏覽器運(yùn)行jscript時(shí)必須調(diào)用的函數(shù)。
[0064]可選地,該裝置還包括:
[0065]觸發(fā)模塊,配置為在觸發(fā)第一事件之前,觸發(fā)第二函數(shù);
[0066]檢查模塊,配置為檢查第二函數(shù)是否由瀏覽器的jscript模塊調(diào)用;
[0067]第二標(biāo)記設(shè)置模塊,配置為當(dāng)?shù)诙瘮?shù)是由瀏覽器的jscript模塊調(diào)用時(shí),為第二函數(shù)設(shè)置標(biāo)記。
[0068]可選地,該裝置還包括:
[0069]第二標(biāo)記去除模塊,配置為在劫持判定模塊判定發(fā)生網(wǎng)頁(yè)劫持,且發(fā)生網(wǎng)頁(yè)劫持所使用的跳轉(zhuǎn)形式為通過(guò)jscript跳轉(zhuǎn)之后,去除第二函數(shù)的標(biāo)記。
[0070]可選地,事件獲取模塊配置為獲取瀏覽器在對(duì)指定網(wǎng)站的訪問(wèn)過(guò)程中,通過(guò)BHO機(jī)制觸發(fā)的連續(xù)的第一事件和第二事件;
[0071]其中,第一事件為BeforeNavigate2 事件,第二事件為 NavigateComplete2 事件。
[0072]可選地,劫持判定模塊還配置為按照如下方式確定是否發(fā)生網(wǎng)頁(yè)劫持:
[0073]獲取與第一事件和第二事件對(duì)應(yīng)的網(wǎng)址;
[0074]判斷與第一事件和第二事件對(duì)應(yīng)的網(wǎng)址是否相同;
[0075]當(dāng)?shù)谝皇录偷诙录?duì)應(yīng)的網(wǎng)址不相同時(shí),則判定指定網(wǎng)站發(fā)生網(wǎng)頁(yè)劫持,且發(fā)生網(wǎng)頁(yè)劫持所使用的跳轉(zhuǎn)形式為通過(guò)http協(xié)議跳轉(zhuǎn)。[0076]可選地,該裝置還包括:
[0077]元素檢測(cè)模塊,配置為在劫持判定模塊根據(jù)代碼特征和觸發(fā)的指定事件確定是否發(fā)生網(wǎng)頁(yè)劫持之后,檢測(cè)返回的數(shù)據(jù)包中是否包含約定的元素;
[0078]發(fā)送模塊,配置為當(dāng)不包含約定的元素時(shí),向服務(wù)器發(fā)送指定網(wǎng)站發(fā)生跳轉(zhuǎn)的通知,通知用于服務(wù)器對(duì)互聯(lián)網(wǎng)中存在跳轉(zhuǎn)的網(wǎng)站進(jìn)行統(tǒng)計(jì)。
[0079]可選地,該裝置還包括:
[0080]文件檢測(cè)模塊,配置為當(dāng)指定網(wǎng)站發(fā)生網(wǎng)頁(yè)劫持時(shí),檢測(cè)本地是否保存有指定網(wǎng)站的文件;
[0081]加載模塊,配置為當(dāng)本地保存有指定網(wǎng)站的文件時(shí),將本地保存的指定網(wǎng)站的文件直接加載到瀏覽器中進(jìn)行顯示。
[0082]可選地,該裝置還包括:
[0083]網(wǎng)址獲取模塊,配置為當(dāng)指定網(wǎng)站發(fā)生網(wǎng)頁(yè)劫持時(shí),獲取跳轉(zhuǎn)后的網(wǎng)頁(yè)的跳轉(zhuǎn)網(wǎng)址;
[0084]判斷模塊,配置為判斷跳轉(zhuǎn)網(wǎng)址是否在服務(wù)器推送的白名單中;
[0085]執(zhí)行模塊,配置為若跳轉(zhuǎn)網(wǎng)址在白名單中,則允許網(wǎng)頁(yè)的跳轉(zhuǎn);
[0086]執(zhí)行模塊還配置為若跳轉(zhuǎn)網(wǎng)址不在白名單中,則禁止加載跳轉(zhuǎn)后的網(wǎng)頁(yè)。
[0087]本發(fā)明提供了一種網(wǎng)頁(yè)劫持的檢測(cè)方法和裝置,通過(guò)獲取瀏覽器對(duì)指定網(wǎng)站的訪問(wèn)過(guò)程中,瀏覽器所執(zhí)行的代碼特征以及觸發(fā)的指定事件來(lái)判斷網(wǎng)頁(yè)是否發(fā)生網(wǎng)頁(yè)劫持,可以解決目前無(wú)法判斷網(wǎng)頁(yè)是否發(fā)生劫持的問(wèn)題,以便于對(duì)網(wǎng)頁(yè)劫持的問(wèn)題進(jìn)行防范、處理,并可給予用戶提示,增強(qiáng)了用戶在瀏覽網(wǎng)頁(yè)過(guò)程中的安全性。
[0088]上述說(shuō)明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說(shuō)明書的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的【具體實(shí)施方式】。
[0089]根據(jù)下文結(jié)合附圖對(duì)本發(fā)明具體實(shí)施例的詳細(xì)描述,本領(lǐng)域技術(shù)人員將會(huì)更加明了本發(fā)明的上述以及其他目的、優(yōu)點(diǎn)和特征。
【專利附圖】
【附圖說(shuō)明】
[0090]通過(guò)閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對(duì)于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對(duì)本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號(hào)表示相同的部件。在附圖中:
[0091]圖1是根據(jù)本發(fā)明一個(gè)實(shí)施例的一種網(wǎng)頁(yè)劫持的檢測(cè)方法流程圖;
[0092]圖2是根據(jù)本發(fā)明一個(gè)實(shí)施例的一種網(wǎng)頁(yè)劫持的具體檢測(cè)方法流程圖;
[0093]圖3是根據(jù)本發(fā)明一個(gè)實(shí)施例的一種網(wǎng)頁(yè)劫持的檢測(cè)裝置結(jié)構(gòu)框圖。
【具體實(shí)施方式】
[0094]下面將參照附圖更詳細(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ù)人員。[0095]實(shí)施例一
[0096]本發(fā)明實(shí)施例提供了一種網(wǎng)頁(yè)劫持的檢測(cè)方法。該方法對(duì)網(wǎng)頁(yè)劫持的檢測(cè)裝置進(jìn)行了改進(jìn)。本實(shí)施例中網(wǎng)頁(yè)劫持的檢測(cè)裝置可以安裝在能夠?yàn)g覽網(wǎng)頁(yè)的客戶端上,例如,客戶端可以為PC (Personal Computer,個(gè)人計(jì)算機(jī)),手機(jī),手持電腦等用戶終端。
[0097]圖1是根據(jù)本發(fā)明一個(gè)實(shí)施例的一種網(wǎng)頁(yè)劫持的檢測(cè)方法流程圖,該方法包括步驟 S102 至 S106。
[0098]S102,接收用戶對(duì)指定網(wǎng)站的訪問(wèn)請(qǐng)求。
[0099]S104,獲取瀏覽器在對(duì)所述指定網(wǎng)站的訪問(wèn)過(guò)程中,所述瀏覽器所執(zhí)行的代碼特征,以及觸發(fā)的指定事件。
[0100]S106,根據(jù)所述代碼特征和所述觸發(fā)的指定事件確定是否發(fā)生網(wǎng)頁(yè)劫持。
[0101]本發(fā)明實(shí)施例提供了一種網(wǎng)頁(yè)劫持的檢測(cè)方法,通過(guò)獲取瀏覽器對(duì)指定網(wǎng)站的訪問(wèn)過(guò)程中,瀏覽器所執(zhí)行的代碼特征以及觸發(fā)的指定事件來(lái)判斷網(wǎng)頁(yè)是否發(fā)生網(wǎng)頁(yè)劫持,可以解決目前無(wú)法判斷網(wǎng)頁(yè)是否發(fā)生劫持的問(wèn)題,以便于對(duì)網(wǎng)頁(yè)劫持的問(wèn)題進(jìn)行防范、處理,并可給予用戶提示,增強(qiáng)了用戶在瀏覽網(wǎng)頁(yè)過(guò)程中的安全性。
[0102]實(shí)施例二
[0103]本實(shí)施例為 上述實(shí)施例一的一種具體應(yīng)用場(chǎng)景,通過(guò)本實(shí)施例,能夠更加清楚、具體地闡述本發(fā)明所提供的方法。
[0104]圖2是根據(jù)本發(fā)明一個(gè)實(shí)施例的一種網(wǎng)頁(yè)劫持的具體檢測(cè)方法流程圖,該方法包括步驟S201至S211。
[0105]首先,由步驟S201來(lái)接收用戶發(fā)出的對(duì)指定網(wǎng)站的訪問(wèn)請(qǐng)求。
[0106]需要說(shuō)明的是,在本步驟S201中,指定網(wǎng)站可以是通過(guò)普通網(wǎng)頁(yè),也可以是導(dǎo)航站。
[0107]本實(shí)施例中,接收用戶發(fā)出的對(duì)指定網(wǎng)站的訪問(wèn)請(qǐng)求的方式可以是通過(guò)輸入U(xiǎn)RL訪問(wèn),也可以是通過(guò)導(dǎo)航站點(diǎn)擊鏈接進(jìn)行訪問(wèn)。
[0108]在接收到用戶發(fā)出的訪問(wèn)請(qǐng)求之后,由步驟S202根據(jù)訪問(wèn)請(qǐng)求下載指定網(wǎng)站的網(wǎng)頁(yè)文檔。
[0109]需要說(shuō)明的是,在對(duì)網(wǎng)站的訪問(wèn)過(guò)程中,首先需要根據(jù)網(wǎng)站的URL獲取網(wǎng)頁(yè)對(duì)應(yīng)的網(wǎng)頁(yè)文檔,一般為HTML (Hyper Text Mark-up Language,超文本標(biāo)記語(yǔ)言)文檔,并由瀏覽器解析該HTML文檔,將運(yùn)行HTML文檔中的JS腳本,下載HTML文檔中的規(guī)定的資源文件,再進(jìn)行網(wǎng)頁(yè)的加載,以顯示到顯示屏幕上。
[0110]接著,執(zhí)行步驟S203,解析并運(yùn)行網(wǎng)頁(yè)文檔,若調(diào)用第一函數(shù),執(zhí)行步驟S204,若調(diào)用第二函數(shù),執(zhí)行步驟S205,若第一函數(shù)和第二函數(shù)均未被調(diào)用,則直接執(zhí)行步驟S206。
[0111]在本實(shí)施例中,第一函數(shù)為瀏覽器調(diào)用meta協(xié)議時(shí)必須調(diào)用的函數(shù),例如可以是Cffindow::MetaRefreshTimerCalIback 函數(shù);
[0112]第二函數(shù)為瀏覽器運(yùn)行jscript時(shí)必須調(diào)用的函數(shù),例如可以為CDoc::DoNavigate 函數(shù)。
[0113]其中,在HTML文檔中,規(guī)定有網(wǎng)頁(yè)上的各種資源文件的地址、屬性、顯示方式的標(biāo)簽,包括有<meta>標(biāo)簽,還可能包括有js腳本。瀏覽器在解析網(wǎng)頁(yè)文檔的過(guò)程中,會(huì)依次根據(jù)標(biāo)簽調(diào)用瀏覽器或系統(tǒng)函數(shù)進(jìn)行解析。[0114]本實(shí)施例中,當(dāng)網(wǎng)頁(yè)文檔中存在<meta>標(biāo)簽,并且<meta>標(biāo)簽中規(guī)定了跳轉(zhuǎn)事件時(shí),則一定會(huì)觸發(fā)第一函數(shù)來(lái)解析該標(biāo)簽。
[0115]例如,當(dāng)網(wǎng)頁(yè)文檔中包括如下<meta>標(biāo)簽時(shí):
[0116]〈meta http_equiv=〃refresh〃content=〃5;url=hell0.html〃>
[0117]在解析該<meta>標(biāo)簽時(shí),瀏覽器會(huì)在當(dāng)前網(wǎng)頁(yè)打開(kāi)5秒后,跳轉(zhuǎn)到URL為hello,html的網(wǎng)頁(yè)。
[0118]當(dāng)網(wǎng)頁(yè)文檔中存在js代碼時(shí),則瀏覽器運(yùn)行該js代碼,一定會(huì)觸發(fā)第二函數(shù)。
[0119]例如,當(dāng)網(wǎng)頁(yè)中包含如下js代碼時(shí):
[0120]script Ianguage=//javascript//type=//text/javascript,
[0121]window, location, href=' hello, html';
[0122]setTimeout("javascript:location, href=’ hello, html’",5000);
[0123]〈/script〉
[0124]瀏覽器在解析該js代碼時(shí),會(huì)在5000毫秒后跳轉(zhuǎn)到URL為hello, html的網(wǎng)頁(yè)
[0125]S204,為上述第一函數(shù)設(shè)置標(biāo)記,并執(zhí)行步驟S206。
[0126]其中,在本步驟中`為第一函數(shù)添加標(biāo)記的目的是,在進(jìn)行網(wǎng)頁(yè)劫持的判斷時(shí)作為參考依據(jù)。
[0127]S205,為上述第二函數(shù)設(shè)置標(biāo)記,并執(zhí)行步驟S206。
[0128]其中,在本步驟中為第二函數(shù)添加標(biāo)記的目的是,在進(jìn)行網(wǎng)頁(yè)劫持的判斷時(shí)作為參考依據(jù)。
[0129]需要說(shuō)明的是,由于第二函數(shù)為CDoc::DoNavigate函數(shù),除了 js代碼會(huì)調(diào)用該函數(shù)外,也有可能該函數(shù)被其他事件觸發(fā)。因此,在本步驟S205之前,還可以包括:
[0130]檢測(cè)所述第二函數(shù)是否為所述瀏覽器的jscript模塊調(diào)用。若是,則通過(guò)步驟S205為第二函數(shù)設(shè)置標(biāo)記,若不是,則不為第二函數(shù)設(shè)置標(biāo)記。
[0131]進(jìn)一步地,由于在瀏覽器中使用的jscript模塊版本不同,因此,對(duì)于不同版本的jscript模塊需要區(qū)分標(biāo)記。
[0132]S206,當(dāng)?shù)谝皇录挥|發(fā)時(shí),檢測(cè)是否有函數(shù)被標(biāo)記。若第一函數(shù)被標(biāo)記,則執(zhí)行步驟S207,若第二函數(shù)被標(biāo)記,則執(zhí)行步驟S209,若不存在被標(biāo)記的函數(shù),則直接執(zhí)行步驟S211。
[0133]其中,在本實(shí)施例中,第一事件為BeforeNavigate2事件。
[0134]在一次網(wǎng)頁(yè)的訪問(wèn)過(guò)程中,BHO (Browser Helper 0bject,瀏覽器輔助對(duì)象)機(jī)制提供了三個(gè)事件:BeforeNavigate2, NavigateComplete〗和 DocumentComplete2 事件。
[0135]在IE瀏覽器中,通過(guò)響應(yīng)“BeforeNavigate2”事件可以獲取IE當(dāng)前加載的URL。
[0136]而在其他瀏覽器中,如在火狐(Firefox)瀏覽器中使用火狐擴(kuò)展機(jī)制提供的指定響應(yīng)事件接口,獲取火狐瀏覽器當(dāng)前加載的URL。在谷歌(chrome)瀏覽器中使用網(wǎng)景插件應(yīng)用程序編程接口(Netscape Plugin Application Programming Interface,簡(jiǎn)稱:NPAPI)插件機(jī)制,獲取谷歌瀏覽器當(dāng)前加載的URL。
[0137]需要說(shuō)明的是,由于實(shí)際應(yīng)用中,人們使用計(jì)算機(jī)的應(yīng)用環(huán)境,如操作系統(tǒng)、瀏覽器類型等的不盡相同,而本發(fā)明所提供的方法,基于不同的瀏覽器應(yīng)利用不同的插件機(jī)制,這是本領(lǐng)域技術(shù)人員可以理解的。[0138]例如,同樣的插件機(jī)制可以運(yùn)行于多種類型的瀏覽器,例如,瀏覽器為IE、firefox、google chrome、safar1、opera、QQ瀏覽器、遨游瀏覽器、搜狗瀏覽器或獵豹瀏覽器
坐坐寸寸ο
[0139]當(dāng)檢測(cè)到上述第一函數(shù)被標(biāo)記時(shí),則步驟S207判定發(fā)生網(wǎng)頁(yè)劫持,且發(fā)生網(wǎng)頁(yè)劫持所使用的跳轉(zhuǎn)形式為通過(guò)meta協(xié)議跳轉(zhuǎn)。
[0140]需要說(shuō)明的是,由于第一函數(shù)被標(biāo)記,說(shuō)明瀏覽器在解析網(wǎng)頁(yè)文檔的過(guò)程中,由于<meta>被標(biāo)記了網(wǎng)頁(yè)跳轉(zhuǎn),因此,可判定發(fā)生了網(wǎng)頁(yè)劫持。
[0141]當(dāng)判定網(wǎng)頁(yè)通過(guò)meta形式發(fā)生了跳轉(zhuǎn)之后,繼續(xù)執(zhí)行步驟S208,即為第一函數(shù)去除標(biāo)記。
[0142]需要說(shuō)明的是,為了避免在下一次進(jìn)行網(wǎng)頁(yè)劫持的判斷時(shí)發(fā)生誤判,因此,在每一次得到判斷結(jié)果后,需要為相應(yīng)的函數(shù)去除標(biāo)記。
[0143]當(dāng)檢測(cè)到上述第二函數(shù)被標(biāo)記時(shí),則步驟S209判定發(fā)生網(wǎng)頁(yè)劫持,且發(fā)生網(wǎng)頁(yè)劫持所使用的跳轉(zhuǎn)形式為通過(guò)jscript跳轉(zhuǎn)。
[0144]需要說(shuō)明的是,由于第二函數(shù)被標(biāo)記,則說(shuō)明瀏覽器在解析網(wǎng)頁(yè)文檔的過(guò)程中,js代碼中被植入了用于跳轉(zhuǎn)的代碼,因此,可判定發(fā)生了網(wǎng)頁(yè)劫持。
[0145]當(dāng)判定網(wǎng)頁(yè) 通過(guò)jscript形式發(fā)生了跳轉(zhuǎn)之后,繼續(xù)執(zhí)行步驟S210,即為第二函數(shù)去除標(biāo)記。
[0146]需要說(shuō)明的是,為了避免在下一次進(jìn)行網(wǎng)頁(yè)劫持的判斷時(shí)發(fā)生誤判,因此,在每一次得到判斷結(jié)果后,需要為相應(yīng)的函數(shù)去除標(biāo)記。
[0147]S211,當(dāng)?shù)诙录挥|發(fā)時(shí),判斷第一事件和第二事件所對(duì)應(yīng)的網(wǎng)址是否相同。
[0148]若相同,則判定未發(fā)生網(wǎng)頁(yè)劫持;
[0149]若不同,則判定指定網(wǎng)站發(fā)生網(wǎng)頁(yè)劫持,且發(fā)生網(wǎng)頁(yè)劫持所使用的跳轉(zhuǎn)形式為通過(guò)http協(xié)議跳轉(zhuǎn)。
[0150]在本實(shí)施例中,第二事件為NavigateComplete2事件,該事件用于在網(wǎng)頁(yè)的加載過(guò)程中,通過(guò)響應(yīng)第二事件即可獲取網(wǎng)頁(yè)加載過(guò)程中的網(wǎng)址。
[0151]其中,若第一事件和第二事件對(duì)應(yīng)的網(wǎng)址不同,則說(shuō)明網(wǎng)頁(yè)通過(guò)http協(xié)議發(fā)送了跳轉(zhuǎn),例如如下情況:
[0152](BeforeNavigate2) url0->(302)urll->(302)url2-> (NavigateComplete〗)url2->(DocumentComplete2)url2。
[0153]如果仍以上述示例為例,在訪問(wèn)頁(yè)面C時(shí),頁(yè)面C有可能發(fā)生多次自動(dòng)跳轉(zhuǎn),依次跳轉(zhuǎn)到Cl和C2。
[0154]其中,302為http協(xié)議中的響應(yīng)代碼,返回302代碼說(shuō)明帶有跳轉(zhuǎn)。
[0155]在本實(shí)施例中,步驟S201至S211中的方法可用于對(duì)客戶端瀏覽器中發(fā)生的異常跳轉(zhuǎn)進(jìn)行監(jiān)測(cè)。
[0156]需要說(shuō)明的是,為了便于對(duì)網(wǎng)頁(yè)的劫持情況進(jìn)行統(tǒng)計(jì),本方法還可以包括如下步驟:
[0157]在發(fā)出對(duì)指定網(wǎng)站發(fā)出的訪問(wèn)請(qǐng)求后,檢測(cè)返回的數(shù)據(jù)包中是否包含約定的元素;
[0158]當(dāng)不包含約定的元素時(shí),向服務(wù)器發(fā)送指定網(wǎng)站發(fā)生跳轉(zhuǎn)的通知,該通知用于服務(wù)器對(duì)互聯(lián)網(wǎng)中存在跳轉(zhuǎn)的網(wǎng)站進(jìn)行統(tǒng)計(jì)。
[0159]例如,當(dāng)用戶訪問(wèn)的為淘寶網(wǎng)站時(shí),則返回的數(shù)據(jù)包中應(yīng)包含網(wǎng)站的題目“淘寶”,而如果返回的數(shù)據(jù)包中,網(wǎng)站的題目為“京東”,則說(shuō)明該網(wǎng)站可能發(fā)生了網(wǎng)頁(yè)劫持。此時(shí),會(huì)向服務(wù)器匯報(bào)該情況,以便于服務(wù)器對(duì)互聯(lián)網(wǎng)上存在的網(wǎng)頁(yè)劫持情況進(jìn)行統(tǒng)計(jì)。
[0160]其中,還可以使用其他關(guān)鍵元素進(jìn)行判斷,例如,網(wǎng)頁(yè)顯示的備案名稱、版塊名稱
坐寸ο
[0161]更進(jìn)一步地,為了解決網(wǎng)頁(yè)被劫持的情況,在判定網(wǎng)頁(yè)發(fā)生劫持后,還可以包括如下步驟:
[0162]檢測(cè)本地是否保存有上述指定網(wǎng)站的文件;
[0163]當(dāng)本地保存有上述指定網(wǎng)站的文件時(shí),將本地保存的指定網(wǎng)站的文件直接加載到瀏覽器中進(jìn)行顯示。
[0164]通過(guò)上述方法,當(dāng)發(fā)生網(wǎng)站被重定向時(shí),則直接將保存在本地的該網(wǎng)站文件加載顯示,可解決部分網(wǎng)站被劫持的問(wèn)題。
[0165]需要說(shuō)明的是,由于網(wǎng)站改版或域名更換等原因,部分網(wǎng)站的跳轉(zhuǎn)是合法的,因此,本發(fā)明還提供了白名單機(jī)制,允許這些網(wǎng)站的跳轉(zhuǎn),可選地,在判斷發(fā)生了上述任意一種形式的跳轉(zhuǎn)之后,還可以執(zhí)行如下步驟:
[0166]獲取跳轉(zhuǎn)后的網(wǎng)頁(yè)的跳轉(zhuǎn)網(wǎng)址,并判斷跳轉(zhuǎn)網(wǎng)址是否在服務(wù)器推送的白名單中;
`[0167]若在白名單中,則允許該網(wǎng)頁(yè)的跳轉(zhuǎn);
[0168]若不在白名單中,則禁止加載跳轉(zhuǎn)后的網(wǎng)頁(yè)。
[0169]其中,對(duì)于白名單可由后臺(tái)管理人員進(jìn)行設(shè)定,例如可將受信任的網(wǎng)站之間的跳轉(zhuǎn)加入到白名單中。
[0170]通過(guò)上述方法,可以使得對(duì)于網(wǎng)站劫持的處理更加全面,若是合法的跳轉(zhuǎn),則允許,若不是合法的跳轉(zhuǎn),則判斷網(wǎng)頁(yè)被劫持,禁止加載該網(wǎng)頁(yè)。
[0171]本發(fā)明實(shí)施例提供了一種網(wǎng)頁(yè)劫持的檢測(cè)方法,通過(guò)獲取瀏覽器對(duì)指定網(wǎng)站的訪問(wèn)過(guò)程中,瀏覽器所執(zhí)行的代碼特征以及觸發(fā)的指定事件來(lái)判斷網(wǎng)頁(yè)是否發(fā)生網(wǎng)頁(yè)劫持,可以解決目前無(wú)法判斷網(wǎng)頁(yè)是否發(fā)生劫持的問(wèn)題,以便于對(duì)網(wǎng)頁(yè)劫持的問(wèn)題進(jìn)行防范、處理,并可給予用戶提示,增強(qiáng)了用戶在瀏覽網(wǎng)頁(yè)過(guò)程中的安全性。
[0172]實(shí)施例三
[0173]圖3是本發(fā)明一個(gè)實(shí)施例提供的一種網(wǎng)頁(yè)劫持的檢測(cè)裝置結(jié)構(gòu)框圖,該裝置300包括:
[0174]請(qǐng)求接收模塊301,配置為接收用戶對(duì)指定網(wǎng)站的訪問(wèn)請(qǐng)求;
[0175]事件獲取模塊302,配置為獲取瀏覽器在對(duì)指定網(wǎng)站的訪問(wèn)過(guò)程中,瀏覽器所執(zhí)行的代碼特征,以及觸發(fā)的指定事件;
[0176]劫持判定模塊303,配置為根據(jù)代碼特征和觸發(fā)的指定事件確定是否發(fā)生網(wǎng)頁(yè)劫持。
[0177]可選地,指定事件為瀏覽器在訪問(wèn)指定網(wǎng)站的過(guò)程中,瀏覽器輔助對(duì)象BHO機(jī)制所提供的第一事件。
[0178]可選地,第一事件為BeforeNavigate〗事件。
[0179]可選地,事件獲取模塊302配置為獲取觸發(fā)第一事件之前瀏覽器調(diào)用的帶有標(biāo)記的指定函數(shù)。
[0180]可選地,劫持判定模塊303配置為當(dāng)帶有標(biāo)記的指定函數(shù)為第一函數(shù)時(shí),判定發(fā)生網(wǎng)頁(yè)劫持,且發(fā)生網(wǎng)頁(yè)劫持所使用的跳轉(zhuǎn)形式為通過(guò)meta協(xié)議跳轉(zhuǎn);
[0181]其中,第一函數(shù)為瀏覽器調(diào)用meta協(xié)議時(shí)必須調(diào)用的函數(shù)。
[0182]可選地,該裝置300還包括:
[0183]第一標(biāo)記設(shè)置模塊304,配置為在觸發(fā)第一事件之前,調(diào)用第一函數(shù),并為第一函數(shù)設(shè)置標(biāo)記。
[0184]可選地,該裝置300還包括:
[0185]第一標(biāo)記去除模塊305,配置為在劫持判定模塊303判定發(fā)生網(wǎng)頁(yè)劫持,且發(fā)生網(wǎng)頁(yè)劫持所使用的跳轉(zhuǎn)形式為通過(guò)meta協(xié)議跳轉(zhuǎn)之后,去除第一函數(shù)的標(biāo)記。
[0186]可選地,劫持判定模塊303配置為當(dāng)帶有標(biāo)記的指定函數(shù)為第二函數(shù)時(shí),判定發(fā)生網(wǎng)頁(yè)劫持,且發(fā)生網(wǎng)頁(yè)劫持所使用的跳轉(zhuǎn)形式為通過(guò)jscript跳轉(zhuǎn);
[0187]其中,第二函數(shù)為瀏覽器運(yùn)行jscript時(shí)必須調(diào)用的函數(shù)。
[0188]可選地,該裝置300還包括:
[0189]觸發(fā)模塊306,配置為在觸發(fā)第一事件之前,觸發(fā)第二函數(shù);
[0190]檢查模塊307,配置為檢查第二函數(shù)是否由瀏覽器的jscript模塊調(diào)用;
[0191]第二標(biāo)記設(shè)置模塊308,配置為當(dāng)?shù)诙瘮?shù)是由瀏覽器的jscript模塊調(diào)用時(shí),為第二函數(shù)設(shè)置標(biāo)記。
[0192]可選地,該裝置300還包括:
[0193]第二標(biāo)記去除模塊309,配置為在劫持判定模塊303判定發(fā)生網(wǎng)頁(yè)劫持,且發(fā)生網(wǎng)頁(yè)劫持所使用的跳轉(zhuǎn)形式為通過(guò)jscript跳轉(zhuǎn)之后,去除第二函數(shù)的標(biāo)記。
[0194]可選地,事件獲取模塊302配置為獲取瀏覽器在對(duì)指定網(wǎng)站的訪問(wèn)過(guò)程中,通過(guò)BHO機(jī)制觸發(fā)的連續(xù)的第一事件和第二事件;
[0195]其中,第一事件為BeforeNavigate2 事件,第二事件為 NavigateComplete2 事件。
[0196]可選地,劫持判定模塊303還配置為按照如下方式確定是否發(fā)生網(wǎng)頁(yè)劫持:
[0197]獲取與第一事件和第二事件對(duì)應(yīng)的網(wǎng)址;
[0198]判斷與第一事件和第二事件對(duì)應(yīng)的網(wǎng)址是否相同;
[0199]當(dāng)?shù)谝皇录偷诙录?duì)應(yīng)的網(wǎng)址不相同時(shí),則判定指定網(wǎng)站發(fā)生網(wǎng)頁(yè)劫持,且發(fā)生網(wǎng)頁(yè)劫持所使用的跳轉(zhuǎn)形式為通過(guò)http協(xié)議跳轉(zhuǎn)。
[0200]可選地,該裝置300還包括:
[0201]元素檢測(cè)模塊310,配置為在劫持判定模塊303根據(jù)代碼特征和觸發(fā)的指定事件確定是否發(fā)生網(wǎng)頁(yè)劫持之后,檢測(cè)返回的數(shù)據(jù)包中是否包含約定的元素;
[0202]發(fā)送模塊311,配置為當(dāng)不包含約定的元素時(shí),向服務(wù)器發(fā)送指定網(wǎng)站發(fā)生跳轉(zhuǎn)的通知,通知用于服務(wù)器對(duì)互聯(lián)網(wǎng)中存在跳轉(zhuǎn)的網(wǎng)站進(jìn)行統(tǒng)計(jì)。
[0203]可選地,該裝置300還包括:
[0204]文件檢測(cè)模塊312,配置為當(dāng)指定網(wǎng)站發(fā)生網(wǎng)頁(yè)劫持時(shí),檢測(cè)本地是否保存有指定網(wǎng)站的文件;
[0205]加載模塊313,配置為當(dāng)本地保存有指定網(wǎng)站的文件時(shí),將本地保存的指定網(wǎng)站的文件直接加載到瀏覽器中進(jìn)行顯示。[0206]可選地,該裝置300還包括:
[0207]網(wǎng)址獲取模塊314,配置為當(dāng)指定網(wǎng)站發(fā)生網(wǎng)頁(yè)劫持時(shí),獲取跳轉(zhuǎn)后的網(wǎng)頁(yè)的跳轉(zhuǎn)網(wǎng)址;
[0208]判斷模塊315,配置為判斷跳轉(zhuǎn)網(wǎng)址是否在服務(wù)器推送的白名單中;
[0209]執(zhí)行模塊316,配置為若跳轉(zhuǎn)網(wǎng)址在白名單中,則允許網(wǎng)頁(yè)的跳轉(zhuǎn);
[0210]執(zhí)行模塊還配置為若跳轉(zhuǎn)網(wǎng)址不在白名單中,則禁止加載跳轉(zhuǎn)后的網(wǎng)頁(yè)。
[0211]本發(fā)明實(shí)施例提供了一種網(wǎng)頁(yè)劫持的檢測(cè)裝置,該裝置通過(guò)獲取瀏覽器對(duì)指定網(wǎng)站的訪問(wèn)過(guò)程中,瀏覽器所執(zhí)行的代碼特征以及觸發(fā)的指定事件來(lái)判斷網(wǎng)頁(yè)是否發(fā)生網(wǎng)頁(yè)劫持,可以解決目前無(wú)法判斷網(wǎng)頁(yè)是否發(fā)生劫持的問(wèn)題,以便于對(duì)網(wǎng)頁(yè)劫持的問(wèn)題進(jìn)行防范、處理,并可給予用戶提示,增強(qiáng)了用戶在瀏覽網(wǎng)頁(yè)過(guò)程中的安全性。
[0212]在此處所提供的說(shuō)明書中,說(shuō)明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實(shí)施例可以在沒(méi)有這些具體細(xì)節(jié)的情況下實(shí)踐。在一些實(shí)例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對(duì)本說(shuō)明書的理解。
[0213]類似地,應(yīng)當(dāng)理解,為了精簡(jiǎn)本公開(kāi)并幫助理解各個(gè)發(fā)明方面中的一個(gè)或多個(gè),在上面對(duì)本發(fā)明的示例性實(shí)施例的描述中,本發(fā)明的各個(gè)特征有時(shí)被一起分組到單個(gè)實(shí)施例、圖、或者對(duì)其的描述中。然而,并不應(yīng)將該公開(kāi)的方法解釋成反映如下意圖:即所要求保護(hù)的本發(fā)明要求比在每個(gè)權(quán)利要求中所明確記載的特征更多的特征。更確切地說(shuō),如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開(kāi)的單個(gè)實(shí)施例的所有特征。因此,遵循【具體實(shí)施方式】的權(quán)利要求書由此明確地并入該【具體實(shí)施方式】,其中每個(gè)權(quán)利要求本身都作為本發(fā)明的單獨(dú)實(shí)施例。
[0214]本領(lǐng)域那些技術(shù)人員可以理解,可以對(duì)實(shí)施例中的設(shè)備中的模塊進(jìn)行自適應(yīng)性地改變并且把它們?cè)O(shè)置在與該實(shí)施例不同的一個(gè)或多個(gè)設(shè)備中。可以把實(shí)施例中的模塊或單元或組件組合成一個(gè)模塊或單元或組件,以及此外可以把它們分成多個(gè)子模塊或子單元或子組件。除了這樣的特征和/或過(guò)程或者單元中的至少一些是相互排斥之外,可以采用任何組合對(duì)本說(shuō)明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開(kāi)的所有特征以及如此公開(kāi)的任何方法或者設(shè)備的所有過(guò)程或單元進(jìn)行組合。除非另外明確陳述,本說(shuō)明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開(kāi)的每個(gè)特征可以由提供相同、等同或相似目的的替代特征來(lái)代替。
[0215]此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實(shí)施例包括其它實(shí)施例中所包括的某些特征而不是其它特征,但是不同實(shí)施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實(shí)施例。例如,在權(quán)利要求書中,所要求保護(hù)的實(shí)施例的任意之一都可以以任意的組合方式來(lái)使用。
[0216]本發(fā)明的各個(gè)部件實(shí)施例可以以硬件實(shí)現(xiàn),或者以在一個(gè)或者多個(gè)處理器上運(yùn)行的軟件模塊實(shí)現(xiàn),或者以它們的組合實(shí)現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實(shí)踐中使用微處理器或者數(shù)字信號(hào)處理器(DSP)來(lái)實(shí)現(xiàn)根據(jù)本發(fā)明實(shí)施例的網(wǎng)頁(yè)劫持的檢測(cè)裝置中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實(shí)現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計(jì)算機(jī)程序和計(jì)算機(jī)程序產(chǎn)品)。這樣的實(shí)現(xiàn)本發(fā)明的程序可以存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上,或者可以具有一個(gè)或者多個(gè)信號(hào)的形式。這樣的信號(hào)可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號(hào)上提供,或者以任何其他形式提供。
[0217]應(yīng)該注意的是上述實(shí)施例對(duì)本發(fā)明進(jìn)行說(shuō)明而不是對(duì)本發(fā)明進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計(jì)出替換實(shí)施例。在權(quán)利要求中,不應(yīng)將位于括號(hào)之間的任何參考符號(hào)構(gòu)造成對(duì)權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個(gè)”不排除存在多個(gè)這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計(jì)算機(jī)來(lái)實(shí)現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個(gè)可以是通過(guò)同一個(gè)硬件項(xiàng)來(lái)具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序。可將這些單詞解釋為名稱。 [0218]至此,本領(lǐng)域技術(shù)人員應(yīng)認(rèn)識(shí)到,雖然本文已詳盡示出和描述了本發(fā)明的多個(gè)示例性實(shí)施例,但是,在不脫離本發(fā)明精神和范圍的情況下,仍可根據(jù)本發(fā)明公開(kāi)的內(nèi)容直接確定或推導(dǎo)出符合本發(fā)明原理的許多其他變型或修改。因此,本發(fā)明的范圍應(yīng)被理解和認(rèn)定為覆蓋了所有這些其他變型或修改。
[0219]本發(fā)明實(shí)施例提供了 Al.—種網(wǎng)頁(yè)劫持的檢測(cè)方法,包括:接收用戶對(duì)指定網(wǎng)站的訪問(wèn)請(qǐng)求;獲取瀏覽器在對(duì)所述指定網(wǎng)站的訪問(wèn)過(guò)程中,所述瀏覽器所執(zhí)行的代碼特征,以及觸發(fā)的指定事件;根據(jù)所述代碼特征和所述觸發(fā)的指定事件確定是否發(fā)生網(wǎng)頁(yè)劫持。A2.根據(jù)Al所述的方法,其中,所述指定事件為所述瀏覽器在訪問(wèn)所述指定網(wǎng)站的過(guò)程中,瀏覽器輔助對(duì)象BHO機(jī)制所提供的第一事件。A3.根據(jù)A2所述的方法,其中,所述第一事件為BeforeNavigate〗事件。A4.根據(jù)A2或A3所述的方法,其中,所述獲取瀏覽器在對(duì)所述指定網(wǎng)站的訪問(wèn)過(guò)程中,所述瀏覽器所執(zhí)行的代碼特征,包括:獲取觸發(fā)所述第一事件之前所述瀏覽器調(diào)用的帶有標(biāo)記的指定函數(shù)。A5.根據(jù)A4所述的方法,其中,所述根據(jù)所述代碼特征和所述觸發(fā)的指定事件確定是否發(fā)生網(wǎng)頁(yè)劫持,包括:當(dāng)所述帶有標(biāo)記的指定函數(shù)為第一函數(shù)時(shí),判定發(fā)生網(wǎng)頁(yè)劫持,且發(fā)生網(wǎng)頁(yè)劫持所使用的跳轉(zhuǎn)形式為通過(guò)meta協(xié)議跳轉(zhuǎn);其中,所述第一函數(shù)為所述瀏覽器調(diào)用所述meta協(xié)議時(shí)必須調(diào)用的函數(shù)。A6.根據(jù)A5所述的方法,其中,在觸發(fā)所述第一事件之前,還包括:調(diào)用所述第一函數(shù),并為所述第一函數(shù)設(shè)置標(biāo)記。A7.根據(jù)A6所述的方法,其中,在判定發(fā)生網(wǎng)頁(yè)劫持,且發(fā)生網(wǎng)頁(yè)劫持所使用的跳轉(zhuǎn)形式為通過(guò)meta協(xié)議跳轉(zhuǎn)之后,還包括:去除所述第一函數(shù)的標(biāo)記。AS.根據(jù)A4所述的方法,其中,所述根據(jù)所述代碼特征和所述觸發(fā)的指定事件確定是否發(fā)生網(wǎng)頁(yè)劫持,包括:當(dāng)所述帶有標(biāo)記的指定函數(shù)為第二函數(shù)時(shí),判定發(fā)生網(wǎng)頁(yè)劫持,且發(fā)生網(wǎng)頁(yè)劫持所使用的跳轉(zhuǎn)形式為通過(guò)jscript跳轉(zhuǎn);其中,所述第二函數(shù)為所述瀏覽器運(yùn)行所述jscript時(shí)必須調(diào)用的函數(shù)。A9.根據(jù)AS所述的方法,其中,在觸發(fā)所述第一事件之前,還包括:觸發(fā)所述第二函數(shù);檢查所述第二函數(shù)是否由所述瀏覽器的jscript模塊調(diào)用;當(dāng)所述第二函數(shù)是由所述瀏覽器的jscript模塊調(diào)用時(shí),為所述第二函數(shù)設(shè)置標(biāo)記。A10.根據(jù)A9所述的方法,其中,在判定發(fā)生網(wǎng)頁(yè)劫持,且發(fā)生網(wǎng)頁(yè)劫持所使用的跳轉(zhuǎn)形式為通過(guò)jscript跳轉(zhuǎn)之后,還包括:去除所述第二函數(shù)的標(biāo)記。All.根據(jù)Al所述的方法,其中,所述獲取瀏覽器在對(duì)所述指定網(wǎng)站的訪問(wèn)過(guò)程中,所述瀏覽器所執(zhí)行的代碼特征,以及觸發(fā)的指定事件,包括:獲取所述瀏覽器在對(duì)所述指定網(wǎng)站的訪問(wèn)過(guò)程中,通過(guò)BHO機(jī)制觸發(fā)的連續(xù)的第一事件和第二事件;其中,所述第一事件為BeforeNavigate〗事件,所述第二事件為NavigateComplete〗事件。A12.根據(jù)All所述的方法,其中,所述根據(jù)所述代碼特征和所述觸發(fā)的指定事件確定是否發(fā)生網(wǎng)頁(yè)劫持,包括:獲取與所述第一事件和所述第二事件對(duì)應(yīng)的網(wǎng)址;判斷與所述第一事件和所述第二事件對(duì)應(yīng)的網(wǎng)址是否相同;當(dāng)所述第一事件和所述第二事件對(duì)應(yīng)的網(wǎng)址不相同時(shí),則判定所述指定網(wǎng)站發(fā)生網(wǎng)頁(yè)劫持,且發(fā)生網(wǎng)頁(yè)劫持所使用的跳轉(zhuǎn)形式為通過(guò)http協(xié)議跳轉(zhuǎn)。A13.根據(jù)Al至A12任一項(xiàng)所述的方法,其中,在所述根據(jù)所述代碼特征和所述觸發(fā)的指定事件確定是否發(fā)生網(wǎng)頁(yè)劫持之后,還包括:檢測(cè)返回的數(shù)據(jù)包中是否包含約定的元素;當(dāng)不包含約定的元素時(shí),向服務(wù)器發(fā)送所述指定網(wǎng)站發(fā)生跳轉(zhuǎn)的通知,所述通知用于所述服務(wù)器對(duì)互聯(lián)網(wǎng)中存在跳轉(zhuǎn)的網(wǎng)站進(jìn)行統(tǒng)計(jì)。A14.根據(jù)Al至A13任一項(xiàng)所述的方法,其中,當(dāng)所述指定網(wǎng)站發(fā)生網(wǎng)頁(yè)劫持時(shí),還包括:檢測(cè)本地是否保存有所述指定網(wǎng)站的文件;當(dāng)本地保存有所述指定網(wǎng)站的文件時(shí),將本地保存的所述指定網(wǎng)站的文件直接加載到所述瀏覽器中進(jìn)行顯示。A15.根據(jù)Al至A14任一項(xiàng)所述的方法,其中,當(dāng)所述指定網(wǎng)站發(fā)生網(wǎng)頁(yè)劫持時(shí),還包括:獲取跳轉(zhuǎn)后的網(wǎng)頁(yè)的跳轉(zhuǎn)網(wǎng)址;判斷所述跳轉(zhuǎn)網(wǎng)址是否在所述服務(wù)器推送的白名單中;若在所述白名單中,則允許所述網(wǎng)頁(yè)的跳轉(zhuǎn);若不在所述白名單中,則禁止加載所述跳轉(zhuǎn)后的網(wǎng)頁(yè)。
[0220] 本發(fā)明實(shí)施例提供了 B16.—種網(wǎng)頁(yè)劫持的檢測(cè)裝置,包括:請(qǐng)求接收模塊,配置為接收用戶對(duì)指定網(wǎng)站的訪問(wèn)請(qǐng)求;事件獲取模塊,配置為獲取瀏覽器在對(duì)所述指定網(wǎng)站的訪問(wèn)過(guò)程中,所述瀏覽器所執(zhí)行的代碼特征,以及觸發(fā)的指定事件;劫持判定模塊,配置為根據(jù)所述代碼特征和所述觸發(fā)的指定事件確定是否發(fā)生網(wǎng)頁(yè)劫持。B17.根據(jù)B16所述的裝置,其中,所述指定事件為所述瀏覽器在訪問(wèn)所述指定網(wǎng)站的過(guò)程中,瀏覽器輔助對(duì)象BHO機(jī)制所提供的第一事件。B18.根據(jù)B17所述的裝置,其中,所述第一事件為BeforeNavigate〗事件。B19.根據(jù)B17或B18所述的裝置,其中,所述事件獲取模塊配置為獲取觸發(fā)所述第一事件之前所述瀏覽器調(diào)用的帶有標(biāo)記的指定函數(shù)。B20.根據(jù)B19所述的裝置,其中,所述劫持判定模塊配置為當(dāng)所述帶有標(biāo)記的指定函數(shù)為第一函數(shù)時(shí),判定發(fā)生網(wǎng)頁(yè)劫持,且發(fā)生網(wǎng)頁(yè)劫持所使用的跳轉(zhuǎn)形式為通過(guò)meta協(xié)議跳轉(zhuǎn);其中,所述第一函數(shù)為所述瀏覽器調(diào)用所述meta協(xié)議時(shí)必須調(diào)用的函數(shù)。B21.根據(jù)B20所述的裝置,其中,所述裝置還包括:第一標(biāo)記設(shè)置模塊,配置為在觸發(fā)所述第一事件之前,調(diào)用所述第一函數(shù),并為所述第一函數(shù)設(shè)置標(biāo)記。B22.根據(jù)B21所述的裝置,其中,所述裝置還包括:第一標(biāo)記去除模塊,配置為在所`述劫持判定模塊判定發(fā)生網(wǎng)頁(yè)劫持,且發(fā)生網(wǎng)頁(yè)劫持所使用的跳轉(zhuǎn)形式為通過(guò)meta協(xié)議跳轉(zhuǎn)之后,去除所述第一函數(shù)的標(biāo)記。B23.根據(jù)B19所述的裝置,其中,所述劫持判定模塊配置為當(dāng)所述帶有標(biāo)記的指定函數(shù)為第二函數(shù)時(shí),判定發(fā)生網(wǎng)頁(yè)劫持,且發(fā)生網(wǎng)頁(yè)劫持所使用的跳轉(zhuǎn)形式為通過(guò)jscript跳轉(zhuǎn);其中,所述第二函數(shù)為所述瀏覽器運(yùn)行所述jscript時(shí)必須調(diào)用的函數(shù)。B24.根據(jù)B23所述的裝置,其中,所述裝置還包括:觸發(fā)模塊,配置為在觸發(fā)所述第一事件之前,觸發(fā)所述第二函數(shù);檢查模塊,配置為檢查所述第二函數(shù)是否由所述瀏覽器的jscript模塊調(diào)用;第二標(biāo)記設(shè)置模塊,配置為當(dāng)所述第二函數(shù)是由所述瀏覽器的jscript模塊調(diào)用時(shí),為所述第二函數(shù)設(shè)置標(biāo)記。B25.根據(jù)B24所述的裝置,其中,所述裝置還包括:第二標(biāo)記去除模塊,配置為在所述劫持判定模塊判定發(fā)生網(wǎng)頁(yè)劫持,且發(fā)生網(wǎng)頁(yè)劫持所使用的跳轉(zhuǎn)形式為通過(guò)jscript跳轉(zhuǎn)之后,去除所述第二函數(shù)的標(biāo)記。B26.根據(jù)B16所述的裝置,其中,所述事件獲取模塊配置為獲取所述瀏覽器在對(duì)所述指定網(wǎng)站的訪問(wèn)過(guò)程中,通過(guò)BHO機(jī)制觸發(fā)的連續(xù)的第一事件和第二事件;其中,所述第一事件為BeforeNavigate2事件,所述第二事件為NavigateComplete2事件。B27.根據(jù)B26所述的裝置,其中,所述劫持判定模塊還配置為按照如下方式確定是否發(fā)生網(wǎng)頁(yè)劫持:獲取與所述第一事件和所述第二事件對(duì)應(yīng)的網(wǎng)址;判斷與所述第一事件和所述第二事件對(duì)應(yīng)的網(wǎng)址是否相同;當(dāng)所述第一事件和所述第二事件對(duì)應(yīng)的網(wǎng)址不相同時(shí),則判定所述指定網(wǎng)站發(fā)生網(wǎng)頁(yè)劫持,且發(fā)生網(wǎng)頁(yè)劫持所使用的跳轉(zhuǎn)形式為通過(guò)http協(xié)議跳轉(zhuǎn)。B28.根據(jù)B16至B27任一項(xiàng)所述的裝置,其中,所述裝置還包括:元素檢測(cè)模塊,配置為在所述劫持判定模塊根據(jù)所述代碼特征和所述觸發(fā)的指定事件確定是否發(fā)生網(wǎng)頁(yè)劫持之后,檢測(cè)返回的數(shù)據(jù)包中是否包含約定的元素;發(fā)送模塊,配置為當(dāng)不包含約定的元素時(shí),向服務(wù)器發(fā)送所述指定網(wǎng)站發(fā)生跳轉(zhuǎn)的通知,所述通知用于所述服務(wù)器對(duì)互聯(lián)網(wǎng)中存在跳轉(zhuǎn)的網(wǎng)站進(jìn)行統(tǒng)計(jì)。B29.根據(jù)B16至B28任一項(xiàng)所述的裝置,其中,所述裝置還包括:文件檢測(cè)模塊,配置為當(dāng)所述指定網(wǎng)站發(fā)生網(wǎng)頁(yè)劫持時(shí),檢測(cè)本地是否保存有所述指定網(wǎng)站的文件;加載模塊,配置為當(dāng)本地保存有所述指定網(wǎng)站的文件時(shí),將本地保存的所述指定網(wǎng)站的文件直接加載到所述瀏覽器中進(jìn)行顯示。B30.根據(jù)B16至B29任一項(xiàng)所述的裝置,其中,所述裝置還包括:網(wǎng)址獲取模塊,配置為當(dāng)所述指定網(wǎng)站發(fā)生網(wǎng)頁(yè)劫持時(shí),獲取跳轉(zhuǎn)后的網(wǎng)頁(yè)的跳轉(zhuǎn)網(wǎng)址;判斷模塊,配置為判斷所述跳轉(zhuǎn)網(wǎng)址是否在所述服務(wù)器推送的白名單中;執(zhí)行模塊,配置為若所述跳轉(zhuǎn)網(wǎng)址在所述白名單中,則允許所述網(wǎng)頁(yè)的跳轉(zhuǎn);所述執(zhí)行模塊還配置為若所述跳轉(zhuǎn)網(wǎng)址不在所述白名單中,則禁止加載所述跳轉(zhuǎn)后的網(wǎng)頁(yè)。
【權(quán)利要求】
1.一種網(wǎng)頁(yè)劫持的檢測(cè)方法,包括: 接收用戶對(duì)指定網(wǎng)站的訪問(wèn)請(qǐng)求; 獲取瀏覽器在對(duì)所述指定網(wǎng)站的訪問(wèn)過(guò)程中,所述瀏覽器所執(zhí)行的代碼特征,以及觸發(fā)的指定事件; 根據(jù)所述代碼特征和所述觸發(fā)的指定事件確定是否發(fā)生網(wǎng)頁(yè)劫持。
2.根據(jù)權(quán)利要求1所述的方法,其中,所述指定事件為所述瀏覽器在訪問(wèn)所述指定網(wǎng)站的過(guò)程中,瀏覽器輔助對(duì)象BHO機(jī)制所提供的第一事件。
3.根據(jù)權(quán)利要求2所述的方法,其中,所述第一事件為BeforeNavigate2事件。
4.根據(jù)權(quán)利要求2或3所述的方法,其中,所述獲取瀏覽器在對(duì)所述指定網(wǎng)站的訪問(wèn)過(guò)程中,所述瀏覽器所執(zhí)行的代碼特征,包括: 獲取觸發(fā)所述第一事件之前所述瀏覽器調(diào)用的帶有標(biāo)記的指定函數(shù)。
5.根據(jù)權(quán)利要求4所述的方法,其中,所述根據(jù)所述代碼特征和所述觸發(fā)的指定事件確定是否發(fā)生網(wǎng)頁(yè)劫持,包括: 當(dāng)所述帶有標(biāo)記的指定函數(shù)為第一函數(shù)時(shí),判定發(fā)生網(wǎng)頁(yè)劫持,且發(fā)生網(wǎng)頁(yè)劫持所使用的跳轉(zhuǎn)形式為通過(guò)meta協(xié)議跳轉(zhuǎn); 其中,所述第一函數(shù)為所述瀏覽器調(diào)用所述meta協(xié)議時(shí)必須調(diào)用的函數(shù)。
6.一種網(wǎng)頁(yè)劫持的 檢測(cè)裝置,包括: 請(qǐng)求接收模塊,配置為接收用戶對(duì)指定網(wǎng)站的訪問(wèn)請(qǐng)求; 事件獲取模塊,配置為獲取瀏覽器在對(duì)所述指定網(wǎng)站的訪問(wèn)過(guò)程中,所述瀏覽器所執(zhí)行的代碼特征,以及觸發(fā)的指定事件; 劫持判定模塊,配置為根據(jù)所述代碼特征和所述觸發(fā)的指定事件確定是否發(fā)生網(wǎng)頁(yè)劫持。
7.根據(jù)權(quán)利要求6所述的裝置,其中,所述指定事件為所述瀏覽器在訪問(wèn)所述指定網(wǎng)站的過(guò)程中,瀏覽器輔助對(duì)象BHO機(jī)制所提供的第一事件。
8.根據(jù)權(quán)利要求7所述的裝置,其中,所述第一事件為BeforeNavigate〗事件。
9.根據(jù)權(quán)利要求7或8所述的裝置,其中,所述事件獲取模塊配置為獲取觸發(fā)所述第一事件之前所述瀏覽器調(diào)用的帶有標(biāo)記的指定函數(shù)。
10.根據(jù)權(quán)利要求9所述的裝置,其中,所述劫持判定模塊配置為當(dāng)所述帶有標(biāo)記的指定函數(shù)為第一函數(shù)時(shí),判定發(fā)生網(wǎng)頁(yè)劫持,且發(fā)生網(wǎng)頁(yè)劫持所使用的跳轉(zhuǎn)形式為通過(guò)meta協(xié)議跳轉(zhuǎn); 其中,所述第一函數(shù)為所述瀏覽器調(diào)用所述meta協(xié)議時(shí)必須調(diào)用的函數(shù)。
【文檔編號(hào)】G06F21/56GK103699840SQ201310682833
【公開(kāi)日】2014年4月2日 申請(qǐng)日期:2013年12月12日 優(yōu)先權(quán)日:2013年12月12日
【發(fā)明者】肖鵬, 鄭勁松 申請(qǐng)人:北京奇虎科技有限公司, 奇智軟件(北京)有限公司