本申請(qǐng)涉及計(jì)算機(jī)領(lǐng)域,尤其涉及一種互聯(lián)網(wǎng)接口的防護(hù)方法及裝置。
背景技術(shù):
目前,互聯(lián)網(wǎng)(Web)接口攻擊一般通過(guò)Web漏洞掃描器(appscan)及一些半自動(dòng)化的工具(burpsuite)刺探來(lái)獲取目標(biāo)網(wǎng)站的漏洞信息,并針對(duì)漏洞信息進(jìn)行攻擊?,F(xiàn)有的Web漏洞掃描常用的是網(wǎng)絡(luò)爬蟲(chóng)功能和漏洞掃描功能。網(wǎng)絡(luò)漏洞掃描主要是基于字符特征串來(lái)識(shí)別。例如,正常訪問(wèn)請(qǐng)求中的URL比如為http://www.taobao.com/test.php?Id=1,而web掃描器進(jìn)行SQL注入掃描,即漏洞掃描時(shí),會(huì)發(fā)出類似http://www.taobao.com/test.php?Id=1+and+1=1這樣的請(qǐng)求。如果識(shí)別出請(qǐng)求中帶有“and 1=1”之類的字符串,可以判定該請(qǐng)求的發(fā)出者正在進(jìn)行SQL注入攻擊,即漏洞掃描。網(wǎng)絡(luò)爬蟲(chóng)功能一般是通過(guò)識(shí)別HTTP請(qǐng)求頭中用戶-代理(user-agent)字段來(lái)識(shí)別非法攻擊,另外也可通過(guò)收集分析來(lái)自同一客戶端的訪問(wèn)頻率來(lái)識(shí)別非法攻擊。用戶-代理字段識(shí)別本質(zhì)上仍然是特征字符串方式。訪問(wèn)頻率判斷識(shí)別方式可通過(guò)增加或者變化請(qǐng)求間的間隔,甚至使用多IP代理訪問(wèn)機(jī)制繞過(guò)WAF的識(shí)別。
如上所述,無(wú)論是漏洞掃描功能還是網(wǎng)絡(luò)爬蟲(chóng)功能,主要采取字符串識(shí)別方式,但Web漏洞掃描方只需構(gòu)造出一個(gè)既能滿足掃描要求又能躲避字符串識(shí)別的特殊字符串即可輕易的繞過(guò)這種字符串識(shí)別。例如:防護(hù)裝置對(duì)于附加的請(qǐng)求字符串“and 1=1”能識(shí)別出它是漏洞掃描者發(fā)出來(lái)的,但對(duì)“and 6=(12/2)”就無(wú)法識(shí)別出它是漏洞掃描者發(fā)出來(lái)的,因此攻擊者(Web漏洞掃描方)發(fā)出“and 6=(12/2)”就可以達(dá)到漏洞掃描而又避免防護(hù)的目的。
技術(shù)實(shí)現(xiàn)要素:
本申請(qǐng)解決的技術(shù)問(wèn)題之一是使Web漏洞掃描者不容易穿透Web接口的防護(hù),提高檢測(cè)到Web漏洞掃描的精確性。
根據(jù)本申請(qǐng)的一個(gè)實(shí)施例,提供了一種互聯(lián)網(wǎng)接口的防護(hù)方法,包括:獲取基于客戶端發(fā)送的第一請(qǐng)求生成的第一響應(yīng)頁(yè)面;在所述第一響應(yīng)頁(yè)面中插入用于產(chǎn)生簽名信息的預(yù)定組件;將插入所述預(yù)定組件的第一響應(yīng)頁(yè)面發(fā)送給客戶端;接收客戶端發(fā)送的第二請(qǐng)求;對(duì)所述第二請(qǐng)求進(jìn)行簽名信息的驗(yàn)證。
根據(jù)本申請(qǐng)的一個(gè)實(shí)施例,提供了一種互聯(lián)網(wǎng)接口的防護(hù)裝置,包括:獲取單元,被配置為獲取基于客戶端發(fā)送的第一請(qǐng)求生成的第一響應(yīng)頁(yè)面;插入單元,被配置為在所述第一響應(yīng)頁(yè)面中插入用于產(chǎn)生簽名信息的預(yù)定組件;發(fā)送單元,被配置為將插入所述預(yù)定組件的第一響應(yīng)頁(yè)面發(fā)送給客戶端;接收單元,被配置為接收客戶端發(fā)送的第二請(qǐng)求;驗(yàn)證單元,被配置為對(duì)所述第二請(qǐng)求進(jìn)行簽名信息的驗(yàn)證。
由于本申請(qǐng)實(shí)施例通過(guò)在響應(yīng)頁(yè)面中插入預(yù)定組件,預(yù)定組件下載到客戶端后在客戶端側(cè)產(chǎn)生簽名信息,并加入到客戶端發(fā)送的第二請(qǐng)求中,這樣,通過(guò)對(duì)第二請(qǐng)求進(jìn)行簽名信息的驗(yàn)證,就驗(yàn)證了第二請(qǐng)求是來(lái)自一個(gè)正常訪問(wèn)網(wǎng)頁(yè)的客戶端,還是Web漏洞掃描者,從而使Web漏洞掃描者不容易穿透Web接口的防護(hù),提高檢測(cè)到Web漏洞掃描的精確性。
本領(lǐng)域普通技術(shù)人員將了解,雖然下面的詳細(xì)說(shuō)明將參考圖示實(shí)施例、附圖進(jìn)行,但本申請(qǐng)并不僅限于這些實(shí)施例。而是,本申請(qǐng)的范圍是廣泛的,且意在僅通過(guò)后附的權(quán)利要求限定本申請(qǐng)的范圍。
附圖說(shuō)明
通過(guò)閱讀參照以下附圖所作的對(duì)非限制性實(shí)施例所作的詳細(xì)描述,本申請(qǐng)的其它特征、目的和優(yōu)點(diǎn)將會(huì)變得更明顯:
圖1示出了根據(jù)本申請(qǐng)一個(gè)實(shí)施例的互聯(lián)網(wǎng)接口的防護(hù)方法的流程圖。
圖2示出了根據(jù)本申請(qǐng)一個(gè)具體實(shí)施例的互聯(lián)網(wǎng)接口的防護(hù)方法的流程圖。
圖3示出了根據(jù)本申請(qǐng)另一個(gè)具體實(shí)施例的互聯(lián)網(wǎng)接口的防護(hù)方法的流程圖。
圖4示出了根據(jù)本申請(qǐng)一個(gè)實(shí)施例的互聯(lián)網(wǎng)接口的防護(hù)裝置的框圖。
附圖中相同或相似的附圖標(biāo)記代表相同或相似的部件。
具體實(shí)施方式
在更加詳細(xì)地討論示例性實(shí)施例之前應(yīng)當(dāng)提到的是,一些示例性實(shí)施例被描述成作為流程圖描繪的處理或方法。雖然流程圖將各項(xiàng)操作描述成順序的處理,但是其中的許多操作可以被并行地、并發(fā)地或者同時(shí)實(shí)施。此外,各項(xiàng)操作的順序可以被重新安排。當(dāng)其操作完成時(shí)所述處理可以被終止,但是還可以具有未包括在附圖中的附加步驟。所述處理可以對(duì)應(yīng)于方法、函數(shù)、規(guī)程、子例程、子程序等等。
在上下文中所稱“計(jì)算機(jī)設(shè)備”,也稱為“電腦”,是指可以通過(guò)運(yùn)行預(yù)定程序或指令來(lái)執(zhí)行數(shù)值計(jì)算和/或邏輯計(jì)算等預(yù)定處理過(guò)程的智能電子設(shè)備,其可以包括處理器與存儲(chǔ)器,由處理器執(zhí)行在存儲(chǔ)器中預(yù)存的存續(xù)指令來(lái)執(zhí)行預(yù)定處理過(guò)程,或是由ASIC、FPGA、DSP等硬件執(zhí)行預(yù)定處理過(guò)程,或是由上述二者組合來(lái)實(shí)現(xiàn)。計(jì)算機(jī)設(shè)備包括但不限于服務(wù)器、個(gè)人電腦、筆記本電腦、平板電腦、智能手機(jī)等。
所述計(jì)算機(jī)設(shè)備包括用戶設(shè)備與網(wǎng)絡(luò)設(shè)備。其中,所述用戶設(shè)備包括但不限于電腦、智能手機(jī)、PDA等;所述網(wǎng)絡(luò)設(shè)備包括但不限于單個(gè)網(wǎng)絡(luò)服務(wù)器、多個(gè)網(wǎng)絡(luò)服務(wù)器組成的服務(wù)器組或基于云計(jì)算(Cloud Computing)的由大量計(jì)算機(jī)或網(wǎng)絡(luò)服務(wù)器構(gòu)成的云,其中,云計(jì)算是分布式計(jì)算的一種,由一群松散耦合的計(jì)算機(jī)集組成的一個(gè)超級(jí)虛擬計(jì)算機(jī)。其中,所述計(jì)算機(jī)設(shè)備可單獨(dú)運(yùn)行來(lái)實(shí)現(xiàn)本申請(qǐng),也可接入網(wǎng)絡(luò)并通過(guò)與網(wǎng)絡(luò)中的其他計(jì)算機(jī)設(shè)備的交互操作來(lái)實(shí)現(xiàn)本申請(qǐng)。其中,所述計(jì)算機(jī)設(shè)備所處的網(wǎng)絡(luò)包括但不限于互聯(lián)網(wǎng)、廣域網(wǎng)、城域網(wǎng)、局域網(wǎng)、VPN網(wǎng)絡(luò)等。
需要說(shuō)明的是,所述用戶設(shè)備、網(wǎng)絡(luò)設(shè)備和網(wǎng)絡(luò)等僅為舉例,其他現(xiàn) 有的或今后可能出現(xiàn)的計(jì)算機(jī)設(shè)備或網(wǎng)絡(luò)如可適用于本申請(qǐng),也應(yīng)包含在本申請(qǐng)保護(hù)范圍以內(nèi),并以引用方式包含于此。
后面所討論的方法(其中一些通過(guò)流程圖示出)可以通過(guò)硬件、軟件、固件、中間件、微代碼、硬件描述語(yǔ)言或者其任意組合來(lái)實(shí)施。當(dāng)用軟件、固件、中間件或微代碼來(lái)實(shí)施時(shí),用以實(shí)施必要任務(wù)的程序代碼或代碼段可以被存儲(chǔ)在機(jī)器或計(jì)算機(jī)可讀介質(zhì)(比如存儲(chǔ)介質(zhì))中。(一個(gè)或多個(gè))處理器可以實(shí)施必要的任務(wù)。
這里所公開(kāi)的具體結(jié)構(gòu)和功能細(xì)節(jié)僅僅是代表性的,并且是用于描述本申請(qǐng)的示例性實(shí)施例的目的。但是本申請(qǐng)可以通過(guò)許多替換形式來(lái)具體實(shí)現(xiàn),并且不應(yīng)當(dāng)被解釋成僅僅受限于這里所闡述的實(shí)施例。
應(yīng)當(dāng)理解的是,雖然在這里可能使用了術(shù)語(yǔ)“第一”、“第二”等等來(lái)描述各個(gè)單元,但是這些單元不應(yīng)當(dāng)受這些術(shù)語(yǔ)限制。使用這些術(shù)語(yǔ)僅僅是為了將一個(gè)單元與另一個(gè)單元進(jìn)行區(qū)分。舉例來(lái)說(shuō),在不背離示例性實(shí)施例的范圍的情況下,第一單元可以被稱為第二單元,并且類似地第二單元可以被稱為第一單元。這里所使用的術(shù)語(yǔ)“和/或”包括其中一個(gè)或更多所列出的相關(guān)聯(lián)項(xiàng)目的任意和所有組合。
應(yīng)當(dāng)理解的是,當(dāng)一個(gè)單元被稱為“連接”或“耦合”到另一單元時(shí),其可以直接連接或耦合到所述另一單元,或者可以存在中間單元。與此相對(duì),當(dāng)一個(gè)單元被稱為“直接連接”或“直接耦合”到另一單元時(shí),則不存在中間單元。應(yīng)當(dāng)按照類似的方式來(lái)解釋被用于描述單元之間的關(guān)系的其他詞語(yǔ)(例如“處于…之間”相比于“直接處于…之間”,“與…鄰近”相比于“與…直接鄰近”等等)。
這里所使用的術(shù)語(yǔ)僅僅是為了描述具體實(shí)施例而不意圖限制示例性實(shí)施例。除非上下文明確地另有所指,否則這里所使用的單數(shù)形式“一個(gè)”、“一項(xiàng)”還意圖包括復(fù)數(shù)。還應(yīng)當(dāng)理解的是,這里所使用的術(shù)語(yǔ)“包括”和/或“包含”規(guī)定所陳述的特征、整數(shù)、步驟、操作、單元和/或組件的存在,而不排除存在或添加一個(gè)或更多其他特征、整數(shù)、步驟、操作、單元、組件和/或其組合。
還應(yīng)當(dāng)提到的是,在一些替換實(shí)現(xiàn)方式中,所提到的功能/動(dòng)作可以按 照不同于附圖中標(biāo)示的順序發(fā)生。舉例來(lái)說(shuō),取決于所涉及的功能/動(dòng)作,相繼示出的兩幅圖實(shí)際上可以基本上同時(shí)執(zhí)行或者有時(shí)可以按照相反的順序來(lái)執(zhí)行。
下面結(jié)合附圖對(duì)本申請(qǐng)作進(jìn)一步詳細(xì)描述。
圖1是根據(jù)本申請(qǐng)一個(gè)實(shí)施例的互聯(lián)網(wǎng)接口的防護(hù)方法的流程圖。
互聯(lián)網(wǎng)接口是指網(wǎng)站服務(wù)器提供的與客戶端通信的接口??蛻舳送ㄟ^(guò)該接口訪問(wèn)網(wǎng)站的網(wǎng)頁(yè),Web漏洞掃描者也通過(guò)該接口進(jìn)行漏洞掃描。互聯(lián)網(wǎng)接口的防護(hù)方法是指對(duì)互聯(lián)網(wǎng)接口進(jìn)行防護(hù),從而防止漏洞掃描者通過(guò)該接口進(jìn)行漏洞掃描的方法。它可以由獨(dú)立于網(wǎng)站服務(wù)器的一個(gè)互聯(lián)網(wǎng)接口的防護(hù)裝置執(zhí)行(如圖2所示),例如作為另一臺(tái)與網(wǎng)站服務(wù)器不同的認(rèn)證服務(wù)器,也可以由網(wǎng)站服務(wù)器上的一個(gè)模塊執(zhí)行(如圖3所示)。在后一種情況下,也可以看做網(wǎng)站服務(wù)器同時(shí)具有提供正常網(wǎng)站訪問(wèn)的功能和互聯(lián)網(wǎng)接口防護(hù)的功能。
結(jié)合圖1中所示,本實(shí)施例所述的互聯(lián)網(wǎng)接口的防護(hù)方法包括步驟S110-S150。
在步驟S110中,獲取基于客戶端發(fā)送的第一請(qǐng)求生成的第一響應(yīng)頁(yè)面。
第一請(qǐng)求例如是客戶端發(fā)出的訪問(wèn)特定頁(yè)面的請(qǐng)求。第一響應(yīng)頁(yè)面就是為該客戶端返回的、該客戶端要訪問(wèn)的特定頁(yè)面。第一請(qǐng)求可以是對(duì)網(wǎng)站的主頁(yè)的請(qǐng)求,例如,用戶在瀏覽器輸入http://www.taobao.com,就發(fā)出了一個(gè)對(duì)淘寶主頁(yè)的請(qǐng)求,這時(shí)第一響應(yīng)頁(yè)面就是淘寶主頁(yè)。第一請(qǐng)求也可以是對(duì):/,/index.heml,/index.php,/index.asp等常見(jiàn)根目錄下的默認(rèn)頁(yè)面的請(qǐng)求??蛇x地,對(duì)于子路徑下的默認(rèn)頁(yè)面,比如/test下的組合,可能會(huì)有/test/,/test/index.html,/test/index.php,/test/index.asp等。此時(shí),第一響應(yīng)頁(yè)面就是常見(jiàn)根目錄下的默認(rèn)頁(yè)面。
在圖1所示的方法由獨(dú)立于網(wǎng)站服務(wù)器的一個(gè)互聯(lián)網(wǎng)接口的防護(hù)裝置(如另一臺(tái)認(rèn)證服務(wù)器)執(zhí)行的情況(即圖2的情況)下,步驟S110中的獲取是指從網(wǎng)站服務(wù)器接收該第一響應(yīng)頁(yè)面。即,網(wǎng)站服務(wù)器接收到(有 可能是通過(guò)互聯(lián)網(wǎng)接口的防護(hù)裝置中轉(zhuǎn)而接收到)客戶端發(fā)送的第一請(qǐng)求,基于第一請(qǐng)求生成第一響應(yīng)頁(yè)面。該第一響應(yīng)頁(yè)面不直接發(fā)給客戶端,而是先發(fā)給互聯(lián)網(wǎng)接口的防護(hù)裝置。
在圖1所示的方法由網(wǎng)站服務(wù)器上的一個(gè)模塊執(zhí)行的情況(即圖3的情況)下,網(wǎng)站服務(wù)器同時(shí)具有提供正常網(wǎng)站訪問(wèn)的功能和互聯(lián)網(wǎng)接口防護(hù)的功能,步驟S110中的獲取是指獲取網(wǎng)站服務(wù)器本身基于客戶端發(fā)送的第一請(qǐng)求生成的第一響應(yīng)頁(yè)面。
在步驟S120中,在所述第一響應(yīng)頁(yè)面中插入用于產(chǎn)生簽名信息的預(yù)定組件。
具體地,預(yù)定組件可以是JS(Javascript)腳本,其可以包括預(yù)定算法,或者包括預(yù)定算法和密鑰??蛻舳私邮盏讲迦腩A(yù)定組件的第一響應(yīng)頁(yè)面后,下載該預(yù)定組件。該預(yù)定組件中的預(yù)定算法就開(kāi)始收集例如客戶端瀏覽器中的一些信息、客戶端的屬性信息、客戶端的光標(biāo)信息等等,用預(yù)定算法處理后,就生成了簽名信息。但是,網(wǎng)絡(luò)爬蟲(chóng)或者Web漏洞掃描器即使下載了該預(yù)定組件,也無(wú)法生成正確的簽名信息,或者能生成正確的簽名信息,但從該簽名信息中還原出的客戶端的屬性信息、客戶端的光標(biāo)信息表現(xiàn)出一些網(wǎng)絡(luò)爬蟲(chóng)或者Web漏洞掃描器的特性,因而很容易識(shí)別出來(lái)。
對(duì)于網(wǎng)絡(luò)爬蟲(chóng),當(dāng)網(wǎng)絡(luò)爬蟲(chóng)在獲取分析網(wǎng)址鏈接時(shí),主要有2類實(shí)現(xiàn)機(jī)制,一是正則表達(dá)式分析URL的方法,另一類是基于瀏覽器內(nèi)核的模擬解析法。對(duì)于第一種方法,由于預(yù)定組件是一段JS代碼,故基于正則式分析URL的方法無(wú)法靜態(tài)產(chǎn)生簽名信息,所以將插入所述預(yù)定組件的第一響應(yīng)頁(yè)面發(fā)送給客戶端后,客戶端返回的請(qǐng)求沒(méi)有簽名信息,就可輕易判斷出這是自動(dòng)化工具提交的請(qǐng)求。對(duì)于第二種方法,基于瀏覽器內(nèi)核實(shí)現(xiàn)的模擬解析爬蟲(chóng),會(huì)將預(yù)定組件進(jìn)行解析來(lái)產(chǎn)生簽名信息,但這類爬蟲(chóng)因?yàn)槎既鄙僬g覽器所擁有的渲染引擎部分,即會(huì)使得從簽名信息中還原出來(lái)的例如屏幕大小等客戶端的屬性信息是異常的。通過(guò)識(shí)別此異常,也可正確識(shí)別出它是自動(dòng)化工具提交的請(qǐng)求。
對(duì)于Web漏洞掃描器,其在提交網(wǎng)絡(luò)請(qǐng)求時(shí),一般都是自己來(lái)拼裝請(qǐng)求信息,在這個(gè)環(huán)境缺少JS解釋器的支持,即使下載了預(yù)定組件,也無(wú)法 解讀,從而無(wú)法產(chǎn)生簽名信息,使得通不過(guò)驗(yàn)證。
這樣,通過(guò)在所述第一響應(yīng)頁(yè)面中插入用于產(chǎn)生簽名信息的預(yù)定組件,在客戶端接收到插入所述預(yù)定組件的第一響應(yīng)頁(yè)面并下載所述預(yù)定組件后,由所述預(yù)定組件產(chǎn)生簽名信息,由于對(duì)于網(wǎng)絡(luò)爬蟲(chóng)或Web漏洞掃描器,不是無(wú)法產(chǎn)生正確的簽名信息,就是從簽名信息中還原出來(lái)的例如屏幕大小等客戶端的屬性信息、客戶端的光標(biāo)信息等出現(xiàn)異常,因此通過(guò)對(duì)這樣的簽名信息進(jìn)行驗(yàn)證,達(dá)到了防止漏洞掃描的效果。
在步驟S130中,將插入所述預(yù)定組件的第一響應(yīng)頁(yè)面發(fā)送給客戶端。
在步驟S140中,接收客戶端發(fā)送的第二請(qǐng)求。
第二請(qǐng)求例如是客戶端發(fā)出了訪問(wèn)特定頁(yè)面的請(qǐng)求之后的后續(xù)請(qǐng)求。例如,客戶端發(fā)出了訪問(wèn)特定頁(yè)面的第一請(qǐng)求后,在客戶端顯示特定頁(yè)面,用戶又點(diǎn)擊了特定頁(yè)面上的某鏈接,則針對(duì)該鏈接指向的頁(yè)面發(fā)出了第二請(qǐng)求。第二請(qǐng)求可以多次發(fā)出。例如,用戶點(diǎn)擊了特定頁(yè)面上的鏈接A,關(guān)掉后又點(diǎn)擊了特定頁(yè)面上的鏈接B,則發(fā)出的兩個(gè)請(qǐng)求都是第二請(qǐng)求,分別對(duì)應(yīng)于對(duì)鏈接A和B指向的頁(yè)面的請(qǐng)求。
如果客戶端正常產(chǎn)生了簽名信息,該簽名信息要加入到第二請(qǐng)求中。所述簽名信息是在客戶端接收到插入所述預(yù)定組件的第一響應(yīng)頁(yè)面并下載所述預(yù)定組件后,由所述預(yù)定組件產(chǎn)生并加入到第二請(qǐng)求中的。
在一種實(shí)現(xiàn)方式中,所述簽名信息是由所述預(yù)定組件通過(guò)以下產(chǎn)生的:至少收集所述客戶端的屬性信息和/或客戶端的光標(biāo)信息,根據(jù)預(yù)定組件中包括的預(yù)定算法生成簽名片段,將所述簽名片段、客戶端的屬性信息和/或客戶端的光標(biāo)信息作為簽名信息。具體地說(shuō),它包括三種情況:
1、至少收集客戶端的屬性信息,根據(jù)預(yù)定算法生成簽名片段,將所述簽名片段和客戶端的屬性信息作為簽名信息;
2、收集所述客戶端的屬性信息和客戶端的光標(biāo)信息,根據(jù)預(yù)定算法生成簽名片段,將所述簽名片段、客戶端的屬性信息和客戶端的光標(biāo)信息作為簽名信息;
3、收集客戶端的光標(biāo)信息,根據(jù)預(yù)定算法生成簽名片段,將所述簽名片段和客戶端的光標(biāo)信息作為簽名信息。
本申請(qǐng)實(shí)施例生成簽名信息的過(guò)程并不局限于以上3種,其只要至少通過(guò)瀏覽器的參數(shù)信息和/或光標(biāo)位置,以使互聯(lián)網(wǎng)接口的防護(hù)裝置能夠根據(jù)該簽名信息判斷出該第二請(qǐng)求是正常用戶發(fā)起的,還是網(wǎng)絡(luò)爬蟲(chóng)或web漏洞掃描動(dòng)作導(dǎo)致程序自動(dòng)發(fā)起的即可。
客戶端的屬性信息可以是屏幕的大小、鍵盤或鼠標(biāo)的配置和/或屏幕亮度等。光標(biāo)信息可以是光標(biāo)的位置信息和/或光標(biāo)的顯示信息。
作為通過(guò)客戶端的屬性信息識(shí)別第二請(qǐng)求是正常用戶發(fā)起的、還是網(wǎng)絡(luò)爬蟲(chóng)或web漏洞掃描動(dòng)作導(dǎo)致程序自動(dòng)發(fā)起的例子,例如一些基于瀏覽器內(nèi)核實(shí)現(xiàn)的網(wǎng)絡(luò)爬蟲(chóng),這類爬蟲(chóng)缺少正常瀏覽器擁有的渲染引擎部分,其生成的簽名信息中的客戶端的屬性信息中的屏幕的大小這一項(xiàng)一般會(huì)很小,故可輕易辨認(rèn)出其非正常用戶操作。
作為通過(guò)客戶端的光標(biāo)信息識(shí)別第二請(qǐng)求是正常用戶發(fā)起的、還是網(wǎng)絡(luò)爬蟲(chóng)或web漏洞掃描動(dòng)作導(dǎo)致程序自動(dòng)發(fā)起的例子,要記錄對(duì)于某個(gè)客戶端連續(xù)多次發(fā)出第二請(qǐng)求時(shí)第二請(qǐng)求中包含的簽名信息中恢復(fù)出來(lái)的光標(biāo)的位置信息不變,則也可輕易辨認(rèn)出其非正常用戶操作。這主要是考慮到正常用戶實(shí)際瀏覽頁(yè)面時(shí),即使點(diǎn)擊同一個(gè)鏈接進(jìn)去,其光標(biāo)在屏幕的物理位置是會(huì)有差異的。
在某些情況下,生成簽名片段時(shí)還結(jié)合客戶端的瀏覽器參數(shù)信息,即收集客戶端的瀏覽器參數(shù)信息和/或所述客戶端的屬性信息和/或客戶端的光標(biāo)信息,根據(jù)預(yù)定組件中包括的預(yù)定算法生成簽名片段,將所述簽名片段、客戶端的瀏覽器參數(shù)信息和/或客戶端的屬性信息和/或客戶端的光標(biāo)信息作為簽名信息。例如,它包括三種情況:
1、收集客戶端的瀏覽器參數(shù)信息、客戶端的屬性信息,根據(jù)預(yù)定算法生成簽名片段,將所述簽名片段同客戶端的屬性信息作為簽名信息;
2、收集客戶端的瀏覽器參數(shù)信息、所述客戶端的屬性信息和客戶端的光標(biāo)信息,根據(jù)預(yù)定算法生成簽名片段,將所述簽名片段、客戶端的屬性信息和客戶端的光標(biāo)信息作為簽名信息;
3、收集客戶端的瀏覽器參數(shù)信息、客戶端的光標(biāo)信息,根據(jù)預(yù)定算法生成簽名片段,將所述簽名片段和客戶端的光標(biāo)信息作為簽名信息。
其中,瀏覽器的參數(shù)信息可以是http標(biāo)頭中的refer字段、請(qǐng)求的URL(統(tǒng)一資源定位符)和/或請(qǐng)求參數(shù)信息。生成簽名片段時(shí)還結(jié)合客戶端的瀏覽器參數(shù)信息是因?yàn)椋W(wǎng)絡(luò)爬蟲(chóng)或web漏洞掃描器發(fā)出的瀏覽器請(qǐng)求中的一些參數(shù)會(huì)與正常用戶瀏覽網(wǎng)頁(yè)時(shí)發(fā)出的瀏覽器請(qǐng)求中的參數(shù)不一樣。通過(guò)識(shí)別這種不同,也能夠識(shí)別出第二請(qǐng)求是正常用戶發(fā)起的、還是網(wǎng)絡(luò)爬蟲(chóng)或web漏洞掃描動(dòng)作導(dǎo)致程序自動(dòng)發(fā)起的。
在步驟S150中,對(duì)所述第二請(qǐng)求進(jìn)行簽名信息的驗(yàn)證。
在一種實(shí)現(xiàn)方式中,該步驟包括:
-判斷第二請(qǐng)求中是否包含簽名信息,如不包含簽名信息,則驗(yàn)證失敗。
例如,在前述網(wǎng)絡(luò)爬蟲(chóng)基于正則表達(dá)式分析URL的方法來(lái)獲取分析網(wǎng)址鏈接的情況下,由于預(yù)定組件是一段JS代碼,故基于正則式分析URL的方法無(wú)法靜態(tài)產(chǎn)生簽名信息,因此,在這種情況,就會(huì)判斷出第二請(qǐng)求中不包含簽名信息,驗(yàn)證失敗。
-通過(guò)預(yù)定算法還原簽名信息中的簽名片段,將從簽名片段中還原出的客戶端的屬性信息和/或客戶端的光標(biāo)信息分別與簽名信息中的客戶端的屬性信息和/或客戶端的光標(biāo)信息進(jìn)行對(duì)比,如不匹配,則驗(yàn)證失??;
在步驟S120中,在所述第一響應(yīng)頁(yè)面中插入用于產(chǎn)生簽名信息的預(yù)定組件時(shí),預(yù)定組件中包括的預(yù)定算法(如果有密鑰的話,還有包括的密鑰)要存儲(chǔ)在互聯(lián)網(wǎng)接口的防護(hù)裝置(如前所述,其可以是獨(dú)立于網(wǎng)站服務(wù)器的裝置,也可以是網(wǎng)站服務(wù)器上的一個(gè)模塊)上。在步驟S150中,就可以用互聯(lián)網(wǎng)接口的防護(hù)裝置上在步驟S120中存儲(chǔ)的預(yù)定算法(以及密鑰,如果有的話)去還原簽名信息中的簽名片段,還原出客戶端的屬性信息和/或客戶端的光標(biāo)信息。由于簽名信息中除了簽名片段之外還包括未經(jīng)預(yù)定算法處理的客戶端的屬性信息和/或客戶端的光標(biāo)信息,將這個(gè)未經(jīng)預(yù)定算法處理的客戶端的屬性信息和/或客戶端的光標(biāo)信息與還原出的客戶端的屬性信息和/或客戶端的光標(biāo)信息進(jìn)行比對(duì)。如果不匹配,則驗(yàn)證失敗。
例如,有些漏洞掃描器可以無(wú)法解讀JS代碼,因而無(wú)法識(shí)別預(yù)定組件,但它可能會(huì)試圖用其它算法生成一個(gè)假的簽名片段,偽造簽名信息。 在這種情況下,它采用的算法與互聯(lián)網(wǎng)接口的防護(hù)裝置端存儲(chǔ)的預(yù)定算法是不同的。用互聯(lián)網(wǎng)接口的防護(hù)裝置端存儲(chǔ)的預(yù)定算法去還原簽名信息,得到的客戶端的屬性信息和/或客戶端的光標(biāo)信息會(huì)與簽名信息中帶的客戶端的屬性信息和/或客戶端的光標(biāo)信息不同。通過(guò)這種對(duì)比,會(huì)檢查出這種用其它算法偽造簽名信息的漏洞掃描者。
-判斷從簽名片段中還原出的客戶端的屬性信息和/或客戶端的光標(biāo)信息是否符合預(yù)定條件,如符合,則驗(yàn)證失敗,如不符合,則驗(yàn)證成功。
預(yù)定條件例如:
1)從簽名片段中還原出的客戶端的屬性信息中屏幕的大小低于預(yù)定閾值。
如前所述,一些基于瀏覽器內(nèi)核實(shí)現(xiàn)的網(wǎng)絡(luò)爬蟲(chóng)缺少正常瀏覽器擁有的渲染引擎部分,其生成的簽名信息中的客戶端的屬性信息中的屏幕的大小這一項(xiàng)一般會(huì)很小,故可輕易辨認(rèn)出其非正常用戶操作。
2)從某個(gè)客戶端連續(xù)多次發(fā)出的第二請(qǐng)求包含的簽名信息中恢復(fù)出來(lái)的光標(biāo)的位置信息不變。
如前所述,正常用戶實(shí)際瀏覽頁(yè)面時(shí),即使點(diǎn)擊同一個(gè)鏈接進(jìn)去,其光標(biāo)在屏幕的物理位置是會(huì)有差異的。如果從某個(gè)客戶端連續(xù)多次發(fā)出的第二請(qǐng)求包含的簽名信息中恢復(fù)出來(lái)的光標(biāo)的位置信息不變,則很可能是非正常用戶操作。
如驗(yàn)證失敗,可以拒絕該客戶端訪問(wèn)互聯(lián)網(wǎng)接口。如驗(yàn)證成功,可以通過(guò)網(wǎng)站服務(wù)器允許該客戶端繼續(xù)訪問(wèn)。
為了進(jìn)一步提高檢測(cè)Web漏洞掃描的準(zhǔn)確率,預(yù)定組件中的預(yù)定算法可以更新。即,每次需要在所述第一響應(yīng)頁(yè)面中插入用于產(chǎn)生簽名信息的預(yù)定組件的情況下,動(dòng)態(tài)生成預(yù)定組件中包含的所述預(yù)定算法,并存儲(chǔ)該預(yù)定算法。例如,用戶輸入網(wǎng)站主頁(yè)的地址,用戶的客戶端瀏覽器發(fā)出第一請(qǐng)求,互聯(lián)網(wǎng)接口的防護(hù)裝置返回加入了預(yù)定組件1的網(wǎng)站主頁(yè)給用戶,這個(gè)預(yù)定組件1中包含預(yù)定算法1;當(dāng)用戶點(diǎn)擊網(wǎng)站主頁(yè)的某鏈接后,互聯(lián)網(wǎng)接口的防護(hù)裝置返回加入預(yù)定組件2的該鏈接指向的網(wǎng)頁(yè),預(yù)定組件2包含與預(yù)定算法1不同的預(yù)定算法2。
這樣做的好處是使目前市面上的一些半自動(dòng)化工具失效。通過(guò)半自動(dòng)化工具,可以分析出預(yù)定算法,從而產(chǎn)生簽名信息。然后,由于本申請(qǐng)實(shí)施例中預(yù)定算法可以不斷更新,而半自動(dòng)化工具分析預(yù)定算法需要時(shí)間,當(dāng)半自動(dòng)化工具分析出預(yù)定算法時(shí),預(yù)定算法已經(jīng)更新了。這樣,使得這類工具即使有人工分析算法來(lái)分析預(yù)定算法,也變得沒(méi)有意義。
結(jié)合圖2中所示,以互聯(lián)網(wǎng)接口的防護(hù)裝置是獨(dú)立于網(wǎng)站服務(wù)器的一個(gè)單獨(dú)的裝置為例,所述的互聯(lián)網(wǎng)接口的防護(hù)方法的一個(gè)詳細(xì)過(guò)程包括:
步驟210、客戶端發(fā)送第一請(qǐng)求給服務(wù)器。
進(jìn)一步,互聯(lián)網(wǎng)接口的防護(hù)裝置可以接收客戶端的第一請(qǐng)求后轉(zhuǎn)發(fā)給服務(wù)器。
步驟220、服務(wù)器接收到第一請(qǐng)求后生成第一響應(yīng)頁(yè)面,返回給互聯(lián)網(wǎng)接口的防護(hù)裝置。具體地,第一響應(yīng)頁(yè)面為第一請(qǐng)求中的網(wǎng)址對(duì)應(yīng)的頁(yè)面內(nèi)容。
步驟230、互聯(lián)網(wǎng)接口的防護(hù)裝置在接收到的第一響應(yīng)頁(yè)面中插入用于產(chǎn)生簽名信息的預(yù)定組件后發(fā)送給客戶端。
客戶端接收到該第一響應(yīng)頁(yè)面后下載該預(yù)定組件。在加載該組件之后,用戶又點(diǎn)擊第一響應(yīng)頁(yè)面中的某個(gè)鏈接,再次發(fā)起對(duì)該鏈接指向的頁(yè)面的第二請(qǐng)求,其請(qǐng)求的頁(yè)面地址例如為http://www.taobao.com/test.php?q=a,該預(yù)定組件此時(shí)捕獲到此信息,并收集瀏覽器特征(比如,refer字段、請(qǐng)求的url、請(qǐng)求參數(shù)和值信息等),收集客戶端屬性信息(如屏幕大小信息),收集點(diǎn)擊時(shí)的光標(biāo)信息(如光標(biāo)位置信息或光標(biāo)顯示信息),將這些信息按照其包括的預(yù)定算法和密鑰計(jì)算出簽名片段,同時(shí)可以將客戶端屬性信息、點(diǎn)擊時(shí)的光標(biāo)信息與簽名片段一起加到第二請(qǐng)求URL中,使客戶端發(fā)送的第二請(qǐng)求變?yōu)椋篽ttp://www.taobao.com/test.php?q=a&waf_sign=12345678&waf_info=qwertyyyyuuuuuuuuuuu,其中,Waf_sign是簽名信息,waf_info則是使用對(duì)稱加密封裝的屏幕特征信息。
步驟240、客戶端將包含有簽名信息的第二請(qǐng)求發(fā)送給互聯(lián)網(wǎng)接口的防 護(hù)裝置。
步驟250、互聯(lián)網(wǎng)接口的防護(hù)裝置接收客戶端發(fā)送的第二請(qǐng)求,并對(duì)該第二請(qǐng)求進(jìn)行簽名信息驗(yàn)證。若驗(yàn)證通過(guò),則通知服務(wù)器,否則發(fā)出警告通知或丟棄該第二請(qǐng)求。
例如,互聯(lián)網(wǎng)接口的防護(hù)裝置接收到第二請(qǐng)求后,其先檢查是否存在簽名信息字段waf_sign和waf_info,如果不存在,說(shuō)明這個(gè)提交是可疑的,驗(yàn)證不通過(guò);若存在,則采用客戶端同樣的預(yù)定算法來(lái)解碼簽名信息,與提交過(guò)來(lái)的waf_sign和waf_info進(jìn)行對(duì)比,如果一致,則進(jìn)一步分析例如屏幕信息的有效性。對(duì)于屏幕信息的有效性,例如需要記錄對(duì)同一個(gè)客戶端IP發(fā)送過(guò)來(lái)的屏幕信息進(jìn)行對(duì)比,如果光標(biāo)位置相對(duì)屏幕一直未發(fā)生變化,則可認(rèn)為此次提交是可疑的。另外,如果客戶端提交的簽名信息中解析出的屏幕大小太小,則此次提交也是可疑的,認(rèn)為驗(yàn)證不通過(guò)。如果前述問(wèn)題沒(méi)有驗(yàn)證出問(wèn)題,則驗(yàn)證通過(guò)。
結(jié)合圖3中所示,以互聯(lián)網(wǎng)接口的防護(hù)裝置是網(wǎng)站服務(wù)器中的一個(gè)模塊為例,所述的互聯(lián)網(wǎng)接口的防護(hù)方法的一個(gè)詳細(xì)過(guò)程包括:
步驟310、客戶端發(fā)送第一請(qǐng)求給網(wǎng)站服務(wù)器。
步驟320、網(wǎng)站服務(wù)器接收到第一請(qǐng)求后生成第一響應(yīng)頁(yè)面。具體地,第一響應(yīng)頁(yè)面為第一請(qǐng)求中的網(wǎng)址對(duì)應(yīng)的頁(yè)面內(nèi)容。
步驟330、帶有互聯(lián)網(wǎng)接口的防護(hù)裝置的網(wǎng)站服務(wù)器在生成的第一響應(yīng)頁(yè)面中插入用于產(chǎn)生簽名信息的預(yù)定組件后發(fā)送給客戶端。
客戶端接收到該第一響應(yīng)頁(yè)面后下載該預(yù)定組件。在加載該組件之后,用戶又點(diǎn)擊第一響應(yīng)頁(yè)面中的某個(gè)鏈接,再次發(fā)起對(duì)該鏈接指向的頁(yè)面的第二請(qǐng)求,其請(qǐng)求的頁(yè)面地址例如為http://www.taobao.com/test.php?q=a,該預(yù)定組件此時(shí)捕獲到此信息,并收集瀏覽器特征(比如,refer字段、請(qǐng)求的url、請(qǐng)求參數(shù)和值信息等),收集客戶端屬性信息(如屏幕大小信息),收集點(diǎn)擊時(shí)的光標(biāo)信息(如光標(biāo)位置信息或光標(biāo)顯示信息),將這些信息按照其包括的預(yù)定算法和密鑰計(jì)算出簽名片段,同時(shí)可以將客戶端屬性信息、點(diǎn)擊時(shí)的光標(biāo)信息與簽名片段一起加到第二請(qǐng)求URL中,使客戶端發(fā)送的 第二請(qǐng)求變?yōu)椋篽ttp://www.taobao.com/test.php?q=a&waf_sign=12345678&waf_info=qwertyyyyuuuuuuuuuuu,其中,Waf_sign是簽名信息,waf_info則是使用對(duì)稱加密封裝的屏幕特征信息。
步驟340、客戶端將包含有簽名信息的第二請(qǐng)求發(fā)送給網(wǎng)站服務(wù)器。
步驟350、網(wǎng)站服務(wù)器接收客戶端發(fā)送的第二請(qǐng)求,并對(duì)該第二請(qǐng)求進(jìn)行簽名信息驗(yàn)證。
例如,網(wǎng)站服務(wù)器接收到第二請(qǐng)求后,其先檢查是否存在簽名信息字段waf_sign和waf_info,如果不存在,說(shuō)明這個(gè)提交是可疑的,驗(yàn)證不通過(guò);若存在,則采用客戶端同樣的預(yù)定算法來(lái)解碼簽名信息,與提交過(guò)來(lái)的waf_sign和waf_info進(jìn)行對(duì)比,如果一致,則進(jìn)一步分析例如屏幕信息的有效性。對(duì)于屏幕信息的有效性,例如需要記錄對(duì)同一個(gè)客戶端IP發(fā)送過(guò)來(lái)的屏幕信息進(jìn)行對(duì)比,如果光標(biāo)位置相對(duì)屏幕一直未發(fā)生變化,則可認(rèn)為此次提交是可疑的。另外,如果客戶端提交的簽名信息中解析出的屏幕大小太小,則此次提交也是可疑的,認(rèn)為驗(yàn)證不通過(guò)。如果前述問(wèn)題沒(méi)有驗(yàn)證出問(wèn)題,則驗(yàn)證通過(guò)。
圖4示出了根據(jù)本申請(qǐng)一個(gè)實(shí)施例的一種互聯(lián)網(wǎng)接口的防護(hù)裝置。它可以是獨(dú)立于網(wǎng)站服務(wù)器的一個(gè)單獨(dú)的裝置,也可以是網(wǎng)站服務(wù)器上的一個(gè)模塊。它包括:獲取單元410,被配置為獲取基于客戶端發(fā)送的第一請(qǐng)求生成的第一響應(yīng)頁(yè)面;插入單元420,被配置為在所述第一響應(yīng)頁(yè)面中插入用于產(chǎn)生簽名信息的預(yù)定組件;發(fā)送單元430,被配置為將插入所述預(yù)定組件的第一響應(yīng)頁(yè)面發(fā)送給客戶端;接收單元440,被配置為接收客戶端發(fā)送的第二請(qǐng)求;驗(yàn)證單元450,被配置為對(duì)所述第二請(qǐng)求進(jìn)行簽名信息的驗(yàn)證。
可選地,所述簽名信息是在客戶端接收到插入所述預(yù)定組件的第一響應(yīng)頁(yè)面并下載所述預(yù)定組件后,由所述預(yù)定組件產(chǎn)生并加入到第二請(qǐng)求中的。
可選地,所述簽名信息是由所述預(yù)定組件通過(guò)以下產(chǎn)生的:
至少收集所述客戶端的屬性信息和/或客戶端的光標(biāo)信息,根據(jù)預(yù)定組件中包括的預(yù)定算法生成簽名片段,將所述簽名片段、客戶端的屬性信息和/或客戶端的光標(biāo)信息作為簽名信息。
可選地,所述驗(yàn)證單元進(jìn)一步被配置為:判斷第二請(qǐng)求中是否包含簽名信息,如不包含簽名信息,則驗(yàn)證失敗;通過(guò)預(yù)定算法還原簽名信息中的簽名片段,將從簽名片段中還原出的客戶端的屬性信息和/或客戶端的光標(biāo)信息分別與簽名信息中的客戶端的屬性信息和/或客戶端的光標(biāo)信息進(jìn)行對(duì)比,如不匹配,則驗(yàn)證失?。慌袛鄰暮灻沃羞€原出的客戶端的屬性信息和/或客戶端的光標(biāo)信息是否符合預(yù)定條件,如符合,則驗(yàn)證失敗,如不符合,則驗(yàn)證成功。
可選地,所述插入單元進(jìn)一步被配置為:每次需要在第一響應(yīng)頁(yè)面中插入用于產(chǎn)生簽名信息的預(yù)定組件的情況下,動(dòng)態(tài)生成預(yù)定組件中包含的所述預(yù)定算法,并存儲(chǔ)該預(yù)定算法。
需要注意的是,本申請(qǐng)可在軟件和/或軟件與硬件的組合體中被實(shí)施,例如,本申請(qǐng)的各個(gè)裝置可采用專用集成電路(ASIC)或任何其他類似硬件設(shè)備來(lái)實(shí)現(xiàn)。在一個(gè)實(shí)施例中,本申請(qǐng)的軟件程序可以通過(guò)處理器執(zhí)行以實(shí)現(xiàn)上文所述步驟或功能。同樣地,本申請(qǐng)的軟件程序(包括相關(guān)的數(shù)據(jù)結(jié)構(gòu))可以被存儲(chǔ)到計(jì)算機(jī)可讀記錄介質(zhì)中,例如,RAM存儲(chǔ)器,磁或光驅(qū)動(dòng)器或軟磁盤及類似設(shè)備。另外,本申請(qǐng)的一些步驟或功能可采用硬件來(lái)實(shí)現(xiàn),例如,作為與處理器配合從而執(zhí)行各個(gè)步驟或功能的電路。
對(duì)于本領(lǐng)域技術(shù)人員而言,顯然本申請(qǐng)不限于上述示范性實(shí)施例的細(xì)節(jié),而且在不背離本申請(qǐng)的精神或基本特征的情況下,能夠以其他的具體形式實(shí)現(xiàn)本申請(qǐng)。因此,無(wú)論從哪一點(diǎn)來(lái)看,均應(yīng)將實(shí)施例看作是示范性的,而且是非限制性的,本申請(qǐng)的范圍由所附權(quán)利要求而不是上述說(shuō)明限定,因此旨在將落在權(quán)利要求的等同要件的含義和范圍內(nèi)的所有變化涵括在本申請(qǐng)內(nèi)。不應(yīng)將權(quán)利要求中的任何附圖標(biāo)記視為限制所涉及的權(quán)利要求。此外,顯然“包括”一詞不排除其他單元或步驟,單數(shù)不排除復(fù)數(shù)。系統(tǒng)權(quán)利要求中陳述的多個(gè)單元或裝置也可以由一個(gè)單元或裝置通過(guò)軟件或 者硬件來(lái)實(shí)現(xiàn)。第一,第二等詞語(yǔ)用來(lái)表示名稱,而并不表示任何特定的順序。