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