實現(xiàn)瀏覽器調(diào)用本地業(yè)務(wù)組件的方法、裝置及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本申請涉及通信技術(shù)領(lǐng)域,尤其是涉及一種實現(xiàn)瀏覽器調(diào)用本地業(yè)務(wù)組件的方法、裝置及系統(tǒng)。
【背景技術(shù)】
[0002]諸如NPAPI (Netscape Plugin Applicat1n Programming Interface,網(wǎng)景插件應(yīng)用程序接口)等瀏覽器插件是用于在瀏覽器中執(zhí)行外部應(yīng)用程序的通用接口。其中,執(zhí)行外部應(yīng)用程序也可以稱之為調(diào)用本地業(yè)務(wù)組件,所謂的調(diào)用本地業(yè)務(wù)組件可以是安裝數(shù)字證書、刪除數(shù)字證書、校驗數(shù)字證書、獲取網(wǎng)卡mac地址等本機(jī)環(huán)境信息等等。除NPAPI夕卜,目前常見的類似功能的瀏覽器插件還包括BHO (Browser Helper Ob ject,瀏覽器輔助對象)、Native Messaging (本地通訊)和 JS-Ctypes 等等。
[0003]然而上述瀏覽器插件也存在一些問題,具體如下:
[0004]雖然幾乎全部桌面端的圖形界面瀏覽器(除IE外)都支持NPAPI,但是,由于NPAPI設(shè)計之初沒有考慮安全性,NPAPI插件編寫不當(dāng)會導(dǎo)致瀏覽器崩潰,甚至造成系統(tǒng)被惡意軟件攻擊;而且NPAPI插件不支持移動設(shè)備,目前已瀕臨被淘汰。目前最新的瀏覽器(例如chrome,F(xiàn)irefox等)大都不再支持NPAPI,屆時將無法使用瀏覽器插件去獲取本地信息及校驗網(wǎng)站數(shù)字證書。ΒΗ0是微軟推出的作為瀏覽器對第三方程序員開放交互接口的業(yè)界標(biāo)準(zhǔn),通過簡單的代碼就可以進(jìn)入瀏覽器領(lǐng)域的交互接口(Interactive Interface),而且現(xiàn)在很多IE瀏覽器個性化工具都是利用ΒΗ0的來實現(xiàn),但是,ΒΗ0只支持IE瀏覽器,應(yīng)用受限。此外,谷歌與在其新的chrome瀏覽器中加入了一個新的本機(jī)通訊(NativeMessaging)接口,以替換掉原來的NPAPI。但是,目前Native Messaging只支持chrome瀏覽器,而且需要在瀏覽器中安裝擴(kuò)展。類似的,JS-Ctypes只支持Firefox瀏覽器,而且同樣需要在瀏覽器中安裝擴(kuò)展。
[0005]因此,在NPAPI瀕臨淘汰而其他瀏覽器插件又不具備通用性的情況下,目前亟需一種通用性強(qiáng)且安全性好的可實現(xiàn)多數(shù)主流瀏覽器調(diào)用本地業(yè)務(wù)組件的方案。
【發(fā)明內(nèi)容】
[0006]本申請實施例的目的在于提供一種實現(xiàn)瀏覽器調(diào)用本地業(yè)務(wù)組件的方法、裝置及系統(tǒng),以保證多數(shù)主流瀏覽器可調(diào)用本地業(yè)務(wù)組件的同時兼顧其安全性。
[0007]為達(dá)到上述目的,一方面,本申請實施例提供了一種實現(xiàn)瀏覽器調(diào)用本地業(yè)務(wù)組件的方法,包括以下步驟:
[0008]客戶端接收瀏覽器端發(fā)起的基于跨域通信協(xié)議的連接請求;
[0009]所述客戶端對所述連接請求進(jìn)行合法性驗證;
[0010]如果所述連接請求通過所述合法性驗證,則所述客戶端建立與所述瀏覽器端的基于所述跨域通信協(xié)議的通信連接,以供所述瀏覽器端調(diào)用本地業(yè)務(wù)組件之用。
[0011]另一方面,本申請實施例還提供了一種實現(xiàn)瀏覽器調(diào)用本地業(yè)務(wù)組件的裝置,該裝置為一客戶端,其包括:
[0012]連接請求接收模塊,用于接收瀏覽器端發(fā)起的基于跨域通信協(xié)議的連接請求;
[0013]合法性驗證模塊,用于對所述連接請求進(jìn)行合法性驗證;
[0014]連接控制模塊,用于當(dāng)所述連接請求通過所述合法性驗證時,建立與所述瀏覽器端的基于所述跨域通信協(xié)議的通信連接,以供所述瀏覽器端調(diào)用本地業(yè)務(wù)組件之用。
[0015]再一方面,本申請實施例還提供了一種實現(xiàn)瀏覽器調(diào)用本地業(yè)務(wù)組件的系統(tǒng),包括:
[0016]瀏覽器端,用于向客戶端發(fā)起基于跨域通信協(xié)議的連接請求;
[0017]客戶端,用于對所述連接請求進(jìn)行合法性驗證,如果所述連接請求通過所述合法性驗證,則所述客戶端建立與所述瀏覽器端的基于所述跨域通信協(xié)議的通信連接,以供所述瀏覽器端調(diào)用本地業(yè)務(wù)組件之用。
[0018]本申請實施例中,由于客戶端支持跨域通信協(xié)議,而現(xiàn)有主流瀏覽器也大都支持跨域通信協(xié)議,因此客戶端可與現(xiàn)有主流瀏覽器建立通信通道,從而在當(dāng)前NPAPI瀕臨淘汰而其他瀏覽器插件又不具備通用性的情況下,提供了一種可使多數(shù)主流瀏覽器調(diào)用本地業(yè)務(wù)組件的通信方案,同時本申請實施例中,在與瀏覽器建立通信連接前,客戶端對于瀏覽器的連接請求進(jìn)行合法性驗證,只有通過合法性驗證的請求才能與其建立用于調(diào)用本地業(yè)務(wù)組件的通信連接,因此,本申請實施例同時還具備防止惡意網(wǎng)站利用客戶端的功能,從而提高了瀏覽器調(diào)用本地業(yè)務(wù)組件的通信安全。
【附圖說明】
[0019]此處所說明的附圖用來提供對本申請實施例的進(jìn)一步理解,構(gòu)成本申請的一部分,并不構(gòu)成對本申請實施例的限定。在附圖中:
[0020]圖1為本申請實施例的實現(xiàn)瀏覽器調(diào)用本地業(yè)務(wù)組件的方法的一個實施例的方法流程圖;
[0021]圖2為本申請實施例的實現(xiàn)瀏覽器調(diào)用本地業(yè)務(wù)組件的裝置的一個實施例的邏輯結(jié)構(gòu)圖;
[0022]圖3為本申請實施例的實現(xiàn)瀏覽器調(diào)用本地業(yè)務(wù)組件的系統(tǒng)的一個實施例的邏輯結(jié)構(gòu)圖。
【具體實施方式】
[0023]為使本申請實施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,下面結(jié)合實施例和附圖,對本申請實施例做進(jìn)一步詳細(xì)說明。在此,本申請實施例的示意性實施例及其說明用于解釋本申請實施例,但并不作為對本申請實施例的限定。
[0024]下面結(jié)合附圖,對本申請實施例的【具體實施方式】作進(jìn)一步的詳細(xì)說明。
[0025]參考圖1所示,本申請實施例的實現(xiàn)瀏覽器調(diào)用本地業(yè)務(wù)組件的方法包括以下步驟:
[0026]步驟S101、客戶端接收瀏覽器端發(fā)起的基于跨域通信協(xié)議的連接請求。當(dāng)瀏覽器端需要調(diào)用本地業(yè)務(wù)組件時,其向客戶端發(fā)起的基于WebSocket協(xié)議連接請求,客戶端則對應(yīng)接收該請求。其中,WebSocket協(xié)議是一種全雙工通訊的網(wǎng)絡(luò)技術(shù),在WebSocket協(xié)議中,通信雙方只需要做一個握手的動作,然后就可快速在通信雙方之間形成了一條通信通道,通信雙方之間就直接可以數(shù)據(jù)互相傳送。而當(dāng)前的主流瀏覽器(例如Chr0mel6+、IE10+、Firefoxll+、Safari6.0+,0peral2.10+,360 安全瀏覽器、360 極速瀏覽器、淘寶瀏覽器、搜狗瀏覽器、UC瀏覽器、獵豹瀏覽器、傲游瀏覽器等)均支持WebSocket協(xié)議。
[0027]需要明確的是,為了使多數(shù)主流瀏覽器可調(diào)用本地業(yè)務(wù)組件,本申請實施例的客戶端與瀏覽器之間需要采用跨域通信協(xié)議,這里的跨域是指跨系統(tǒng)安全域。WebSocket協(xié)議是本申請實施例的優(yōu)選,但本申請實施例也可以采用其他跨域通信協(xié)議(例如JS0NP協(xié)議、C0RS協(xié)議等)替代。但是,JS0NP協(xié)議對發(fā)送的數(shù)據(jù)包有大小限制,如果發(fā)送的數(shù)據(jù)長度超過限制,余下的數(shù)據(jù)會被截斷。而采用C0RS協(xié)議時,客戶端返回給服務(wù)器的數(shù)據(jù)頭(Response header)中需加上一個特殊字段,但客戶端無法主動給服務(wù)器發(fā)送消息,服務(wù)器必須不停向客戶端查詢是否有數(shù)據(jù)發(fā)送給自己才行。WebSocket協(xié)議則不存在上述兩種協(xié)議的局限,從而可快速為通信雙方建立雙向通信通道。而且,使用WebSocket協(xié)議這種通信方式,即使在客戶端崩潰時,網(wǎng)站也是無感知的,因為客戶端可以在后臺重啟并繼續(xù)服務(wù),從而可以提升網(wǎng)站體驗。
[0028]步驟S102、客戶端對連接請求進(jìn)行合法性驗證;如果通過合法性驗證,則執(zhí)行步驟S103 ;否則,客戶端斷開與瀏覽器端的連接,以防止惡意網(wǎng)站利用客戶端。本步驟中,合法性驗證的目的在于防止惡意網(wǎng)站利用客戶端,這樣惡意網(wǎng)站就無法利用客戶端獲取本機(jī)的信息了,因而提高了通信安全性。本步驟中,合法性驗證優(yōu)選通過判斷發(fā)起連接請求的瀏覽器端所對應(yīng)的網(wǎng)站是否為網(wǎng)站白名單中的網(wǎng)站的驗證方式。這是因為通常需要調(diào)用本地業(yè)務(wù)組件的網(wǎng)站相對較少,因此使用網(wǎng)站白名單驗證可加快客戶端的合法性驗證的處理速度。當(dāng)然,本步驟中,合法性驗證也可采用其他方式,比如令牌(token)驗證。令牌驗證是用非對稱加密算法加密的,只有合法的網(wǎng)站才能生成那個令牌,而令牌被修改后可以被客戶端識別,從而拒絕連接。
[0029]步驟S103、當(dāng)該連接請求通過合法性驗證時,客戶端建立與瀏覽器端的基于WebSocket協(xié)議的通信連接,以供瀏覽器端調(diào)用本地業(yè)務(wù)組件之用。建立通信連接后,瀏覽器端調(diào)用本地業(yè)務(wù)組件過程大致如下:
[0030]1)、瀏覽器端向客戶端發(fā)送命令;
[0031]2)、客戶端解析命令并分發(fā)給對應(yīng)的本地業(yè)務(wù)組件;
[0032]3)