本發(fā)明屬于信息安全領(lǐng)域。通過人機(jī)識別為網(wǎng)站抵御惡意掃描和惡意流量,提高網(wǎng)站的安全性。
背景技術(shù):
互聯(lián)網(wǎng)飛速發(fā)展,很多公司都以網(wǎng)站的方式為用戶提供服務(wù)。隨著提供的服務(wù)多樣化,網(wǎng)站的用戶也會多樣化。網(wǎng)站除了接受正常用戶的請求,還要接受很多的掃描器發(fā)送過來的請求。有調(diào)查發(fā)現(xiàn),掃描器在2016年發(fā)出的流量比正常用戶多,達(dá)51.8%。掃描器的類型也是很多。除了常見的網(wǎng)絡(luò)爬蟲,還有手機(jī)的內(nèi)容采集以及偽裝成正常用戶的ddos。
在掃描器中還有很大部分是惡意的掃描。這些掃描器會冒充的用戶來訪問頁面內(nèi)容,他們一般是通過偽裝user-agent的方式企圖繞過網(wǎng)絡(luò)安全防護(hù)。以近期爆發(fā)的惡意程序mirai為例,它利用假的user-agent來冒充chrome和safari發(fā)出的流量。掃描器除了偽裝成正常用戶來進(jìn)行ddos的惡意活動之外,還包括黑客的網(wǎng)站漏洞掃描工具,垃圾留言產(chǎn)生器,網(wǎng)絡(luò)爬蟲等。
隨著目前攻擊手段的多樣化,攻擊工具多樣,根據(jù)imperva的調(diào)查發(fā)現(xiàn),目前有94.2%的網(wǎng)站每天都會收到掃描器的掃描,說明目前掃描器對網(wǎng)站的掃描已經(jīng)變成了常態(tài),使用自動程序來攻擊網(wǎng)站已經(jīng)非常普遍。攻擊者通過利用掃描器的方式來入侵網(wǎng)站。
鑒于掃描器對網(wǎng)站進(jìn)行掃描的情況十分普遍,但是目前常見的安全產(chǎn)品僅僅是對網(wǎng)站進(jìn)行安全性的保護(hù),防止網(wǎng)站遭受常規(guī)性的安全攻擊,如常見的sql注入,xss,惡意文件上傳以及ddos。對掃描器沒有進(jìn)行相關(guān)的識別和防護(hù)。本技術(shù)和裝置就是為了增強(qiáng)目前安全產(chǎn)品的功能。本裝置主要就是從所有的請求中識別出正常用戶發(fā)出的請求還是掃描器發(fā)出的請求。在識別掃描器之后,能夠阻止掃描器對網(wǎng)站進(jìn)行更進(jìn)一步的掃描,從而提升網(wǎng)站的安全性。
技術(shù)實(shí)現(xiàn)要素:
為了解決目前網(wǎng)站不斷地受到掃描器惡意掃描的問題,本發(fā)明提供了一種基于行為差異的web環(huán)境下的人機(jī)識別技術(shù)和裝置。此發(fā)明通過常見的掃描器指紋、訪問頻率,訪問時(shí)是否帶有cookie信息,客戶端是否能夠執(zhí)行javascript代碼,在訪問url時(shí)是否有點(diǎn)擊事件的方法來綜合判斷目前訪問網(wǎng)站的客戶端是正常用戶還是掃描器。通過部署本裝置,能夠有效地減少網(wǎng)站的惡意掃描的流量,保障網(wǎng)站的安全性。
本發(fā)明的方法采用的技術(shù)方案是:
一種基于行為差異的web環(huán)境下的人機(jī)識別裝置,其特征在于,包括:
客戶端標(biāo)識裝置:用來對客戶端進(jìn)行標(biāo)識;作為之后客戶端的認(rèn)證;如果判斷此標(biāo)識為掃描器,則說明此標(biāo)識所對應(yīng)的客戶端為掃描器;
基于訪問頻率判定裝置:通過客戶端的訪問頻率來判斷客戶端是否為掃描器:
基于掃描器指紋識別裝置:通過檢測請求頭中是否含有常見的掃描器的信息來判斷客戶端是否為掃描器;若請求頭中含有掃描器的信息,則說明客戶端一定為掃描器;
基于cookie的識別裝置:在初次訪問的時(shí)候,在響應(yīng)頭中注入cookie;在隨后的訪問中,檢測此cookie是否存在;如果在隨后的訪問中或者是cookie的值與預(yù)設(shè)的cookie不匹配,那么說明此客戶端為掃描器;考慮到cookie可能會被客戶端篡改,將cookie的值綁定客戶端的信息;如果篡改了cookie信息,則仍然會被認(rèn)為是掃描器;
基于javascript執(zhí)行的裝置:在響應(yīng)中注入一段javascript代碼;此javascript代碼作用就是在客戶端中加入一個(gè)cookie然后執(zhí)行302跳轉(zhuǎn);如果在隨后的響應(yīng)中沒有發(fā)現(xiàn)這段javascript生成的cookie,說明此客戶端無法執(zhí)行javascript代碼,則說明此客戶端為掃描器。
一種基于行為差異的web環(huán)境下的人機(jī)識別方法,其特征在于,包括:
步驟1:首先會通過客戶端的user-agent、host、ip信息作為客戶端的標(biāo)識;
步驟2:判斷客戶端為否為掃描件,符合以下任意條件,均判斷為客戶端為掃描件:
判斷條件一:判斷步驟1中的標(biāo)識訪問網(wǎng)站的頻率是否超過了預(yù)設(shè)的閾值,如果超過了閾值,則判定此客戶端為掃描器;
判斷條件二:分析發(fā)送都網(wǎng)站的http的請求頭信息;如果在http的請求頭中發(fā)現(xiàn)有掃描器的指紋信息,則判定為此客戶端為掃描器;
步驟3,在http的響應(yīng)頭中注入一個(gè)cookie值;如果在隨后的請求中,http的請求頭中不含有此cookie值,則判定此客戶端為掃描器,否則,轉(zhuǎn)入步驟4;
步驟4:在http的響應(yīng)代碼中,注入一段javascript代碼;在隨后的請求中,會判斷此javascript代碼是否被客戶端執(zhí)行;如果發(fā)現(xiàn)javascript代碼沒有被執(zhí)行;則判定此客戶端為掃描器;
步驟5:監(jiān)測在網(wǎng)站中發(fā)起一次新的請求時(shí),是否有點(diǎn)擊事件觸發(fā);如果在訪問頻次超過預(yù)設(shè)的閾值之后,沒有觸發(fā)一次點(diǎn)擊事件,則判定此客戶端為掃描器;
步驟6:如果判斷客戶端為掃描器,則阻止掃描器的進(jìn)一步請求和訪問;如果判斷客戶端為正常用戶之后,本裝置對用戶的訪問不進(jìn)行干預(yù)。
在上述的一種基于行為差異的web環(huán)境下的人機(jī)識別方法,客戶端的標(biāo)識的信息來源包括http請求頭中的user-agent、host、ip還包括在裝置中預(yù)設(shè)的特征值;將所有的信息進(jìn)行加密得到的加密值即為客戶端的標(biāo)識。
在上述的一種基于行為差異的web環(huán)境下的人機(jī)識別方法,步驟1中所述的閾值是在裝置中預(yù)先設(shè)置的;裝置在每次收到http的請求頭之后,就會統(tǒng)計(jì)訪問次數(shù);如果檢測到訪問次數(shù)超過了預(yù)設(shè)的閾值,則判定此標(biāo)識所對應(yīng)的客戶端為掃描器。
在上述的一種基于行為差異的web環(huán)境下的人機(jī)識別方法,判斷條件二中,掃描器的指紋信息包括了http請求頭中的user-agent信息,http請求頭中不符合標(biāo)準(zhǔn)的多余的請求頭(掃描器自己添加的請求頭),http請求參數(shù)中的參數(shù)值信息;不符合標(biāo)準(zhǔn)的多余的請求頭指掃描器自行添加的請求頭,通過檢測http請求頭是否存在以上所描述的指紋信息來判斷客戶端是否為掃描器;如果在客戶端中存在指紋信息,則判定為掃描器。
在上述的一種基于行為差異的web環(huán)境下的人機(jī)識別方法,步驟3中所述的在http的響應(yīng)頭中注入cookie的方式主要是通過在響應(yīng)頭中通過setc-cookie的方式來加入cookie值;此cookie值與瀏覽器中的user-agent,ip信息有關(guān);在加入cookie之后,對隨后發(fā)送過來的請求頭進(jìn)行分析;分析請求中是否存在set-cookie,set-cookie中是否含有設(shè)定的cookie值;如果不存在set-cookie或者是set-cookie中不含有對應(yīng)的cookie值,則判定此標(biāo)識所對應(yīng)的客戶端為掃描器。
在上述的一種基于行為差異的web環(huán)境下的人機(jī)識別方法,所述步驟4中,javascript的代碼注入;本裝置首先會檢測在請求頭中是否會存在js-cookie值;如果存在js-cookie,驗(yàn)證是否與裝置計(jì)算得一致,若一致,則判定為正常用戶,否則判定為掃描器;如果不存在js-cookie的值,則返回本裝置預(yù)設(shè)的一段javascript代碼,此javascript代碼的作用有2個(gè);其一,執(zhí)行javascript代碼在瀏覽器中加入js-cookie;其二,頁面進(jìn)行302跳轉(zhuǎn),跳轉(zhuǎn)到用戶原本要訪問的網(wǎng)站。
在上述的一種基于行為差異的web環(huán)境下的人機(jī)識別方法,所述步驟5中,點(diǎn)擊事件觸發(fā)指監(jiān)聽網(wǎng)站上面所有的點(diǎn)擊href事件,為了能夠監(jiān)聽所有的點(diǎn)擊事件,需要在網(wǎng)站的返回html代碼中加入href點(diǎn)擊事件的監(jiān)聽代碼;在隨后的訪問中,若訪問網(wǎng)站的次數(shù)超過了預(yù)設(shè)的閾值,但是卻沒有點(diǎn)擊事件,則判定此標(biāo)識對應(yīng)的客戶端為掃描器。
本發(fā)明技術(shù)的主要優(yōu)點(diǎn)有:1、網(wǎng)站部署簡單,不需要修改網(wǎng)站的任何代碼,也不需要對服務(wù)器的配置進(jìn)行修改,只需要將本裝置進(jìn)行編譯安裝,然后通過反向代理的方式進(jìn)行簡單的配置即可。2、對系統(tǒng)開銷少。由于在客戶端僅僅是增加了2個(gè)cookie,對服務(wù)端并沒有什么壓力。其次通過大量的實(shí)際測試,在響應(yīng)中注入javascript代碼對用戶的訪問也幾乎沒有影響。最后所有的檢測都是在本裝置中來完成的,因而對服務(wù)端也沒有壓力。3、識別準(zhǔn)確。通過對目前大量的掃描器進(jìn)行測試,包括商用的掃描器或者是開源的掃描器,部署了本裝置之后就能夠有效地防御大部分的掃描器的掃描,大大地加強(qiáng)了網(wǎng)站的安全性。定制方面??紤]到網(wǎng)站在訪問量,頁面的不同,裝置中所有預(yù)設(shè)的值都在裝置中的配置文件進(jìn)行修改。在使用過程中,隨著網(wǎng)站的業(yè)務(wù)變化,也可以對參數(shù)進(jìn)行修改。修改完畢之后,只需要重啟裝置就可以了??缙脚_使用。本裝置可以在windows,linux,unix,macos上面進(jìn)行安裝。
附圖說明
圖1是本發(fā)明實(shí)施例的裝置原理圖。
圖2是本發(fā)明實(shí)施例的流程圖。
圖3是js點(diǎn)擊事件監(jiān)聽。
具體實(shí)施方式
為了便于本領(lǐng)域普通技術(shù)人員理解和實(shí)施本發(fā)明,下面結(jié)合附圖以及實(shí)施例對本發(fā)明做進(jìn)一步的詳細(xì)描述。應(yīng)當(dāng)理解,此處所描述的實(shí)施示例僅用于說明和解釋本發(fā)明,本不用于限定本發(fā)明。
本發(fā)明技術(shù)方案的目的在于通過,訪問頻率判定方法,基于掃描器指紋識別方法、基于cookie識別方法,基于javascript執(zhí)行識別方法,基于點(diǎn)擊事件差異性識別方法的綜合判斷來區(qū)分正常用戶和掃描器。在識別掃描器之后,阻止掃描器進(jìn)一步地掃描網(wǎng)站。
本發(fā)明提供一種基于行為差異的web環(huán)境下的人機(jī)識別技術(shù),需構(gòu)建如下裝置:客戶端標(biāo)識裝置、基于訪問頻率判定裝置、基于掃描器指紋識別裝置、基于cookie識別裝置、基于javascript執(zhí)行識別裝置、基于點(diǎn)擊事件差異性識別裝置,如圖1所示。
基于掃描器指紋識別裝置,通過檢測請求頭中是否含有常見的掃描器的信息來判斷客戶端是否為掃描器。若請求頭中含有掃描器的信息,則說明客戶端一定為掃描器。
基于cookie的識別裝置,目前很多的掃描器都無法攜帶請求頭的上下文信息,比如cookie。本方法是通過在初次訪問的時(shí)候,在響應(yīng)頭中注入cookie。在隨后的訪問中,檢測此cookie是否存在。如果在隨后的訪問中或者是cookie的值與預(yù)設(shè)的cookie不匹配,那么說明此客戶端為掃描器??紤]到cookie可能會被客戶端篡改,本裝置會將cookie的值是綁定了客戶端的信息。如果篡改了cookie信息,則仍然會被認(rèn)為是掃描器。
基于javascript執(zhí)行的裝置。目前大部分的掃描器都無法執(zhí)行javascript代碼,通過對客戶端是否能夠執(zhí)行javascript就能夠有效地識別掃描器。本裝置會在響應(yīng)中注入一段javascript代碼。此javascript代碼作用就是在客戶端中加入一個(gè)cookie然后執(zhí)行302跳轉(zhuǎn)。如果在隨后的響應(yīng)中沒有發(fā)現(xiàn)這段javascript生成的cookie,說明此客戶端無法執(zhí)行javascript代碼,則說明此客戶端為掃描器。
基于點(diǎn)擊事件差異性的識別裝置。考慮到目前大部分的掃描器都是爬網(wǎng)頁,從網(wǎng)頁中提取鏈接,然后訪問鏈接,得到網(wǎng)頁,周而復(fù)始。正常用戶的訪問一般都是通過滑動鼠標(biāo),點(diǎn)擊頁面上的鏈接來進(jìn)行訪問的。這樣在正常用戶點(diǎn)擊一個(gè)網(wǎng)址訪問訪問的時(shí)候,就必然會有鼠標(biāo)相關(guān)的事件,包括鼠標(biāo)的移動、鼠標(biāo)的點(diǎn)擊、鼠標(biāo)在頁面上的位置。通過在頁面中注入一段javascript代碼來監(jiān)測頁面中的url,判斷在進(jìn)行訪問的時(shí)候是否存在鼠標(biāo)事件。如果客戶端在大量訪問的時(shí)候,沒有一次鼠標(biāo)相關(guān)的事件,那么說明此客戶端為掃描器。
下面結(jié)合實(shí)施例對本發(fā)明做進(jìn)一步闡述。
本發(fā)明跨平臺,在windows環(huán)境、linux環(huán)境、unix環(huán)境、macos環(huán)境下都可以使用。在本示例中以ubuntu為例來說明本裝置的安裝以及配置。
首先,在ubuntu下編譯openresty源碼來進(jìn)行安裝。安裝之后,將本裝置防止在/usr/local目錄下。將nginx.conf的中的根目錄替換為目前網(wǎng)站的根目錄即可。這樣就完成了本裝置的安裝。
根據(jù)網(wǎng)站的實(shí)際情況對網(wǎng)站進(jìn)行配置,配置文件是config.lua。配置的選項(xiàng)包括掃描器訪問的閾值設(shè)定、cookie的相關(guān)字段的設(shè)置、需要開啟的掃描器的識別方法的設(shè)定。設(shè)定完成之后,重啟裝置即可。在完成所有的配置之后,裝置就會對發(fā)送到網(wǎng)站的流量進(jìn)行分析,識別流量中的掃描器。
裝置在收到發(fā)送過來的http的請求之后,就會提取請求頭中的相關(guān)信息,判斷這些信息是否包含有常見的掃描器的指紋信息。如果檢測到這些信息中包含有掃描器的指紋信息,說明這客戶端就是掃描器。
裝置在通過請求頭信息無法識別出掃描器之后,就會進(jìn)一步地進(jìn)行判斷。裝置就會統(tǒng)計(jì)此標(biāo)識在一段時(shí)間內(nèi)的訪問量。如果訪問量超過了預(yù)設(shè)的訪問量,就認(rèn)為是掃描器。否則就會進(jìn)入到下一步的判斷。
裝置會在服務(wù)器的響應(yīng)頭中加入一個(gè)cookie值,此cookie值會與客戶端的信息相關(guān)聯(lián)。如果在接下來的請求中,客戶端沒有攜帶此cookie值,則認(rèn)為此客戶端為掃描器?;蛘叽薱ookie值與客戶端的信息不符合,也同樣認(rèn)為是掃描器。
裝置還在在響應(yīng)頭中檢測是否存在一個(gè)js-cookie的值。此值是由本裝置生成的javascript代碼生成。如果檢測到不存在js-cookie值,本裝置就會生成一段javascript代碼。此javascript代碼的作用就兩個(gè)。1.執(zhí)行javascript代碼,在客戶端生成一個(gè)js-cookie;2.在生成js-cookie之后,進(jìn)行302跳轉(zhuǎn),跳轉(zhuǎn)到原來的頁面。生成的js-cookie與客戶端的信息有關(guān)。在隨后的請求中,如果沒有檢測到j(luò)s-cookie的值,則一直會重復(fù)上述的步驟,最后就會因?yàn)樵L問過多被認(rèn)為是掃描器。如果存在js-cookie的值,但是js-cookie的值與預(yù)設(shè)的js-cookie的值不匹配,則認(rèn)為目前正在訪問網(wǎng)站的是一個(gè)掃描器。
除了上述的檢測方法外,還可以通過客戶端在訪問新頁面時(shí)的鼠標(biāo)動作來進(jìn)行判斷。正常的用戶在訪問新的網(wǎng)頁的時(shí)候(不考慮直接在地址欄輸入,或者是打開標(biāo)簽的方式),一般都會通過鼠標(biāo)來點(diǎn)擊鏈接。所以正常的用戶點(diǎn)擊必然會伴隨有鼠標(biāo)的事件。但是掃描器則是直接通過網(wǎng)址來進(jìn)行訪問。如果發(fā)現(xiàn)在大量的訪問中沒有一次鼠標(biāo)點(diǎn)擊事件,說明此客戶端就是掃描器。
本發(fā)明技術(shù)的主要就是通過分析在進(jìn)行網(wǎng)頁訪問時(shí)正常用戶與掃描器在網(wǎng)頁的差異性,通過訪問頻率判定方法,基于掃描器指紋識別方法、基于cookie識別方法,基于javascript執(zhí)行識別方法,基于點(diǎn)擊事件差異性識別方法的綜合判斷來區(qū)分正常用戶和掃描器。經(jīng)過實(shí)踐檢驗(yàn),本裝置能夠有效地識別出掃描器,能夠保護(hù)網(wǎng)站免受掃描器的掃描從而提升網(wǎng)站的安全性。
應(yīng)當(dāng)理解的是,本說明書未詳細(xì)闡述的部分均屬于現(xiàn)有技術(shù)。應(yīng)當(dāng)理解的是,上述針對較佳實(shí)施例的描述較為詳細(xì),并不能因此而認(rèn)為是對本發(fā)明專利保護(hù)范圍的限制,本領(lǐng)域的普通技術(shù)人員在本發(fā)明的啟示下,在不脫離本發(fā)明權(quán)利要求所保護(hù)的范圍情況下,還可以做出替換或變形,均落入本發(fā)明的保護(hù)范圍之內(nèi),本發(fā)明的請求保護(hù)范圍應(yīng)以所附權(quán)利要求為準(zhǔn)。