瀏覽器防注入方法、瀏覽器客戶端和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及瀏覽器技術(shù)領(lǐng)域,具體涉及一種瀏覽器防注入方法、一種瀏覽器客戶端和帶有瀏覽器客戶端的裝置。
【背景技術(shù)】
[0002]瀏覽器是指可以顯示網(wǎng)頁服務(wù)器或者文件系統(tǒng)的HTML(超文本標(biāo)記語言,HyperText Mark-up Language))文件內(nèi)容,并讓用戶與這些文件交互的一種軟件。網(wǎng)頁瀏覽器主要通過HTTP協(xié)議與網(wǎng)頁服務(wù)器交互并獲取網(wǎng)頁,這些網(wǎng)頁由URL(統(tǒng)一資源定位符,Uniform Resource Locator)指定,文件格式通常為HTML。
[0003]在瀏覽器使用過程中,可能有其他程序向瀏覽器注入一些動態(tài)鏈接庫,以控制瀏覽器執(zhí)行自己需要的邏輯,比如網(wǎng)絡(luò)請求被重定向到不安全網(wǎng)頁、收藏夾里自動反復(fù)添加不安全網(wǎng)站、IE選項卡中出現(xiàn)不能更改或被隱藏的項目、獲取在網(wǎng)頁中的登錄名和密碼等,因此,這些程序注入的動態(tài)鏈接庫對于用戶的瀏覽器來說并不安全。
【發(fā)明內(nèi)容】
[0004]鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的瀏覽器客戶端和相應(yīng)的瀏覽器防注入方法。
[0005]依據(jù)本發(fā)明的一個方面,提供了一種瀏覽器防注入的方法,包括:
[0006]加載用于攔截窗口消息的窗口消息鉤子函數(shù);
[0007]針對操作系統(tǒng)中的窗口消息,通過所述窗口消息鉤子函數(shù)進行攔截;
[0008]判斷所述窗口消息是否為劫持瀏覽器的窗口消息;
[0009]如果所述窗口消息是劫持瀏覽器的窗口消息,則停止所述窗口消息的傳輸。
[0010]優(yōu)選地,所述加載用于攔截窗口消息的窗口消息鉤子函數(shù),包括:
[0011]調(diào)用動態(tài)鏈接庫加載函數(shù)加載所述窗口消息鉤子函數(shù)所在的動態(tài)鏈接庫,以加載所述窗口消息鉤子函數(shù)。
[0012]優(yōu)選地,所述判斷所述窗口消息是否為劫持瀏覽器的窗口消息,包括:
[0013]將所述窗口消息所屬的窗口句柄名與預(yù)置的窗口句柄名單進行匹配;如果所述窗口句柄匹配上,則確定所述窗口消息為劫持瀏覽器的窗口消息。
[0014]優(yōu)選地,在窗口句柄匹配之后,還包括:
[0015]獲取所述窗口句柄所屬應(yīng)用程序的驗證簽名;
[0016]對所述驗證簽名進行驗證,如果所述驗證失敗,則確定所述窗口消息為劫持瀏覽器的窗口消息。
[0017]優(yōu)選地,所述針對操作系統(tǒng)中的窗口消息,通過所述窗口消息鉤子函數(shù)進行攔截包括:
[0018]針對操作系統(tǒng)中的創(chuàng)建窗口的窗口消息,通過所述窗口消息鉤子函數(shù)進行攔截。
[0019]優(yōu)選地,所述針對操作系統(tǒng)中的創(chuàng)建窗口的窗口消息,通過所述窗口消息鉤子函數(shù)進行攔截包括:
[0020]針對操作系統(tǒng)中的創(chuàng)建窗口的WM_CREATE消息,通過所述窗口消息鉤子函數(shù)進行攔截。
[0021]優(yōu)選地,所述加載用于攔截窗口消息的窗口消息鉤子函數(shù)包括:
[0022]瀏覽器向當(dāng)前操作系統(tǒng)中的第一操作系統(tǒng)服務(wù)發(fā)送加載請求,以便所述第一操作系統(tǒng)服務(wù)通過調(diào)用一虛擬的設(shè)備級驅(qū)動程序以加載用于攔截窗口消息的窗口消息鉤子函數(shù)。
[0023]優(yōu)選地,還包括:
[0024]瀏覽器獲取第一操作系統(tǒng)服務(wù)的安裝文件并進行安裝,以得到所述當(dāng)前操作系統(tǒng)中的第一操作系統(tǒng)服務(wù)。
[0025]優(yōu)選地,所述瀏覽器向當(dāng)前操作系統(tǒng)中的第一操作系統(tǒng)服務(wù)發(fā)送加載請求,包括:
[0026]所述瀏覽器通過預(yù)置的接口向獨立于瀏覽器的第二應(yīng)用程序發(fā)送加載請求;所述獨立于瀏覽器的第二應(yīng)用程序?qū)⑺黾虞d請求發(fā)送至當(dāng)前操作系統(tǒng)中的第一操作系統(tǒng)服務(wù),以便所述第一操作系統(tǒng)服務(wù)通過調(diào)用一虛擬的設(shè)備級驅(qū)動程序以加載用于攔截窗口消息的窗口消息鉤子函數(shù)。
[0027]優(yōu)選地,所述瀏覽器獲取第一操作系統(tǒng)服務(wù)的安裝文件并進行安裝,以得到所述當(dāng)前操作系統(tǒng)中的第一操作系統(tǒng)服務(wù),包括:
[0028]獲取第一操作系統(tǒng)服務(wù)的安裝文件,通過所述第一操作系統(tǒng)服務(wù)的安裝文件安裝所述第一操作系統(tǒng)服務(wù)的動態(tài)鏈接庫和所述虛擬的設(shè)備級驅(qū)動程序;
[0029]啟動所述第一操作系統(tǒng)服務(wù)所在應(yīng)用程序,以加載第一操作系統(tǒng)服務(wù)的動態(tài)鏈接庫;所述第一操作系統(tǒng)服務(wù)通過所述動態(tài)鏈接庫調(diào)用所述虛擬的設(shè)備級驅(qū)動程序。
[0030]優(yōu)選地,所述瀏覽器獲取第一操作系統(tǒng)服務(wù)的安裝文件并進行安裝,以得到所述當(dāng)前操作系統(tǒng)中的第一操作系統(tǒng)服務(wù),包括:
[0031]判斷所述第一操作系統(tǒng)服務(wù)是否存在;如果所述第一操作系統(tǒng)服務(wù)不存在,則獲取第一操作系統(tǒng)服務(wù)的安裝文件并進行安裝,以得到所述當(dāng)前操作系統(tǒng)中的第一操作系統(tǒng)服務(wù)。
[0032]優(yōu)選地,所述第一操作系統(tǒng)服務(wù)通過調(diào)用一虛擬的設(shè)備級驅(qū)動程序以加載用于攔截窗口消息的窗口消息鉤子函數(shù),包括:
[0033]所述第一操作系統(tǒng)服務(wù)接收到所述加載請求,根據(jù)所述加載請求創(chuàng)建I/O請求包下發(fā)至所述虛擬的設(shè)備級驅(qū)動程序;
[0034]所述虛擬的設(shè)備級驅(qū)動程序接收到所述I/O請求包后,調(diào)用動態(tài)鏈接庫加載函數(shù)加載用于攔截窗口消息的窗口消息鉤子函數(shù)。
[0035]優(yōu)選地,在以加載用于攔截窗口消息的窗口消息鉤子函數(shù)之前,還包括:
[0036]第一操作系統(tǒng)服務(wù)判斷所述加載請求的發(fā)送方是否為指定瀏覽器;
[0037]如果所述加載請求的發(fā)送方不是指定瀏覽器,則不進入后續(xù)處理;
[0038]如果所述加載請求的發(fā)送方是指定瀏覽器,則根據(jù)所述加載請求創(chuàng)建I/O請求包下發(fā)至所述虛擬的設(shè)備級驅(qū)動程序。
[0039]優(yōu)選地,所述加載請求包括所述瀏覽器的身份驗證信息;
[0040]進一步的,所述第一操作系統(tǒng)服務(wù)判斷所述加載請求的發(fā)送方是否為指定瀏覽器包括:
[0041]解析所述加載請求中的身份驗證信息,將所述身份驗證信息與預(yù)先存儲的身份驗證信息進行匹配;如果匹配上,則判斷所述加載請求的發(fā)送方是指定瀏覽器。
[0042]優(yōu)選地,在加載用于攔截窗口消息的窗口消息鉤子函數(shù)之前,還包括:
[0043]所述虛擬的設(shè)備級驅(qū)動程序根據(jù)所述I/O請求包判斷所述加載請求的發(fā)送方是否為指定瀏覽器;
[0044]如果所述加載請求的發(fā)送方不是指定瀏覽器,則不進入后續(xù)處理;
[0045]如果所述加載請求的發(fā)送方是指定瀏覽器,則加載用于攔截窗口消息的窗口消息鉤子函數(shù)。
[0046]優(yōu)選地,所述加載請求包括所述瀏覽器的身份驗證信息;
[0047]進一步的,所述虛擬的設(shè)備級驅(qū)動程序根據(jù)所述I/O請求包判斷所述加載請求的發(fā)送方是否為指定瀏覽器包括:
[0048]所述虛擬的設(shè)備級驅(qū)動程序接收由第一操作系統(tǒng)服務(wù)發(fā)送的I/O請求包;所述I/O請求包括瀏覽器的身份驗證信息;
[0049]解析所述I/O請求包中的身份驗證信息,將所述身份驗證信息與預(yù)先存儲的身份驗證信息進行匹配;如果匹配上,則判斷所述加載請求的發(fā)送方是指定瀏覽器。
[0050]依據(jù)本發(fā)明的另外一個方面,提供了一種瀏覽器客戶端,包括:
[0051]內(nèi)核組件,其配置為處理接收到的窗口消息;
[0052]防注入組件,具體包括:
[0053]全局鉤子加載模組,其配置為加載用于攔截窗口消息的窗口消息鉤子函數(shù);
[0054]窗口消息攔截模組,其配置為針對操作系統(tǒng)中的窗口消息,通過所述窗口消息鉤子函數(shù)進行攔截;
[0055]窗口消息判斷模組,其配置為判斷所述窗口消息是否為劫持瀏覽器的窗口消息;
[0056]窗口消息停止模組,其配置為如果所述窗口消息是劫持瀏覽器的窗口消息,則停止所述將所述窗口消息傳輸至內(nèi)核組件。
[0057]優(yōu)選地,所述全局鉤子加載模組包括:
[0058]第一加載模組,其配置為調(diào)用動態(tài)鏈接庫加載函數(shù)加載所述窗口消息鉤子函數(shù)所在的動態(tài)鏈接庫,以加載所述窗口消息鉤子函數(shù)。
[0059]優(yōu)選地,所述窗口消息判斷模組包括:
[0060]窗口句柄判斷模組,其配置為將所述窗口消息所屬的窗口句柄名與預(yù)置的窗口句柄名單進行匹配;如果所述窗口句柄匹配上,則確定所述窗口消息為劫持瀏覽器的窗口消息。
[0061]優(yōu)選地,還包括:
[0062]窗口簽名獲取模組,其配置為在所述窗口句柄匹配上之后,獲取所述窗口句柄所屬應(yīng)用程序的驗證簽名;
[0063]窗口簽名驗證模組,其配置為對所述驗證簽名進行驗證,如果所述驗證失敗,則確定所述窗口消息為劫持瀏覽器的窗口消息。
[0064]優(yōu)選地,所述窗口消息攔截模組包括:
[0065]創(chuàng)建窗口消息攔截模組,其配置為針對操作系統(tǒng)中的創(chuàng)建窗口的窗口消息,通過所述窗口消息鉤子函數(shù)進行攔截。
[0066]優(yōu)選地,所述創(chuàng)建窗口消息攔截模組包括:
[0067]第一創(chuàng)建窗口消息攔截模組,其配置為針對操作系統(tǒng)中的創(chuàng)建窗口的WM_CREATE窗口消息,通過所述窗口消息鉤子函數(shù)進行攔截。
[0068]優(yōu)選地,所述全局鉤子加載模組包括:
[0069]請求處理模組,其配置為瀏覽器向當(dāng)前操作系統(tǒng)中的第一操作系統(tǒng)服務(wù)發(fā)送加載請求,以便所述第一操作系統(tǒng)服務(wù)通過調(diào)用一虛擬的設(shè)備級驅(qū)動程序以加載用于攔截窗口消息的窗口消息鉤子函數(shù)。
[0070]優(yōu)選地,還包括:
[0071]服務(wù)安裝模組,其配置為瀏覽器獲取第一操作系統(tǒng)服務(wù)的安裝文件并進行安裝,以得到所述當(dāng)前操作系統(tǒng)中的第一操作系統(tǒng)服務(wù)。
[0072]優(yōu)選地,所述全局鉤子加載模組包括:
[0073]第一請求發(fā)送模組,其配置為所述瀏覽器通過預(yù)置的接口向獨立于瀏覽器的第二應(yīng)用程序發(fā)送加載請求;所述獨立于瀏覽器的第二應(yīng)用程序?qū)⑺黾虞d請求發(fā)送至當(dāng)前操作系統(tǒng)中的第一操作系統(tǒng)服務(wù),以便所述第一操作系統(tǒng)服務(wù)通過調(diào)用一虛擬的設(shè)備級驅(qū)動程序以加載用于攔截窗口消息的窗口消息鉤子函數(shù)。
[0074]優(yōu)選地,所述服務(wù)安裝模組包括:
[0075]第一服務(wù)安裝模組,其配置為獲取第一操作系統(tǒng)服務(wù)的安裝文件,通過所述第一操作系統(tǒng)服務(wù)的安裝文件安裝所述第一操作系統(tǒng)服務(wù)的動態(tài)鏈接庫和所述虛擬的設(shè)備級驅(qū)動程序;
[0076]服務(wù)啟動模組,其配置為啟動所述第一操作系統(tǒng)服務(wù)所在應(yīng)用程序,以加載第一操作系統(tǒng)服務(wù)的動態(tài)鏈接庫;所述第一操作系統(tǒng)服務(wù)通過所述動態(tài)鏈接庫調(diào)用所述虛擬的設(shè)備級驅(qū)動程序。
[0077]優(yōu)選地,所述服務(wù)安裝模組包括:
[0078]服務(wù)存在判斷模組,其配置為判斷所述第一操作系統(tǒng)服務(wù)是否存在;如果所述第一操作系統(tǒng)服務(wù)不存在,則獲取第一操作系統(tǒng)服務(wù)的安裝文件并進行安裝,以得到所述當(dāng)前操作系統(tǒng)中的第一操作系統(tǒng)服務(wù)。
[0079]優(yōu)選地,所述請求處理模組包括:
[0080]請求接收模組,其配置為所述第一操作系統(tǒng)服務(wù)接收到所述加載請求,根據(jù)所述加載請求創(chuàng)建I/o請求包下發(fā)至所述虛擬的設(shè)備級驅(qū)動程序;
[0081]驅(qū)動加載模組,其配置為所述虛擬的設(shè)備級驅(qū)動程序接收到所述I/O請求包后,調(diào)用動態(tài)鏈接庫加載函數(shù)加載用于攔截窗口消息的窗口消息鉤子函數(shù)。
[0082]優(yōu)選地,所述全局鉤子加載模組還包括:
[0083]服務(wù)服務(wù)身份驗證模組,其配置為在以加載用于攔截窗口消息的窗口消息鉤子函數(shù)之前,第一操作系統(tǒng)服務(wù)判斷所述加載請求的發(fā)送方是否為指定瀏覽器;如果所述加載請求的發(fā)送方不是指定瀏覽器,則不進入后續(xù)處理;如果所述加載請求的發(fā)送方是指定瀏覽器,則根據(jù)所述加載請求創(chuàng)建I/o請求包下發(fā)至所述虛擬的設(shè)備級驅(qū)動程序。
[0084]優(yōu)選地,所述加載請求包括所述瀏覽器的身份驗證信息;
[0085]進一步的,所述服務(wù)身份驗證模組包括:
[0086]服務(wù)解析驗證模組,其配置為解析所述加載請求中的身份驗證信息,將所述身份驗證信息與預(yù)先存儲的身份驗證信息進行匹配;如果匹配上,則判斷所述加載請求的發(fā)送方是指定瀏覽器。
[0087]優(yōu)選地,所述全局鉤子加載模組還包括:
[0088]驅(qū)動身份驗證模組,其配置為在加載用于攔截窗口消息的窗口消息鉤子函數(shù)之前,所述虛擬的設(shè)備級驅(qū)動程序根據(jù)所述I/o請求包判斷所述加載請求的發(fā)送方是否為指定瀏覽器;如果所述加載請求的發(fā)送方不是指定瀏覽器,則不進入后續(xù)處理;如果所述加載請求的發(fā)送方是指定瀏覽器,則加載用于攔截窗口消息的窗口消息鉤子函數(shù)。
[0089]優(yōu)選地,所述加載請求包括所述瀏覽器的身份驗證信息;<