專利名稱:Sql注入攻擊檢測(cè)方法及其裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及信息安全技術(shù)領(lǐng)域,尤其是涉及一種SQL注入攻擊檢測(cè)方法及其裝置。
背景技術(shù):
隨著互聯(lián)網(wǎng)的逐步發(fā)展,提供各種服務(wù)的網(wǎng)絡(luò)站點(diǎn)越來越多,給人們的日常生活 提供了很大的方便。然而,同樣隨著互聯(lián)網(wǎng)發(fā)展以及計(jì)算機(jī)技術(shù)的進(jìn)步,針對(duì)網(wǎng)站系統(tǒng)的攻 擊種類也是越來越多,越來越頻繁。其中,SQL注入攻擊已經(jīng)逐漸成為網(wǎng)站系統(tǒng)遭遇的最頻 繁的攻擊方式之一,通過SQL注入攻擊能夠篡改網(wǎng)頁內(nèi)容并可能取得網(wǎng)站系統(tǒng)最高的數(shù)據(jù) 管理權(quán)限,給網(wǎng)站系統(tǒng)帶來嚴(yán)重的危害。由于SQL注入事件頻繁發(fā)生,既損害WEB系統(tǒng)建 設(shè)單位的形象,也可能直接導(dǎo)致經(jīng)濟(jì)上的損失,甚至產(chǎn)生嚴(yán)重的社會(huì)影響。對(duì)于通信運(yùn)營(yíng)商 而言,越來越多的業(yè)務(wù)系統(tǒng)通過WEB形式,提供網(wǎng)頁瀏覽服務(wù),完成相應(yīng)業(yè)務(wù)訂購(gòu)與提供功 能,如門戶網(wǎng)站、音樂平臺(tái)、彩鈴系統(tǒng)、號(hào)簿管家系統(tǒng)等?;赪EB的業(yè)務(wù)系統(tǒng)的部署越來越 廣泛,如果防護(hù)不當(dāng)而使WEB站點(diǎn)遭受SQL注入攻擊,就可能導(dǎo)致業(yè)務(wù)系統(tǒng)網(wǎng)頁內(nèi)容被篡 改,甚至有可能由于業(yè)務(wù)系統(tǒng)的相關(guān)業(yè)務(wù)數(shù)據(jù)被篡改而造成經(jīng)濟(jì)上的損失和不良的社會(huì)影 響。實(shí)際上,現(xiàn)有的SQL注入攻擊的實(shí)現(xiàn)方式比較簡(jiǎn)單,攻擊者通過構(gòu)造特定的輸入 字符串實(shí)現(xiàn)對(duì)WEB系統(tǒng)后臺(tái)數(shù)據(jù)庫的非法操作。常見的SQL注入攻擊方式為攻擊者通過在 網(wǎng)站的URL中加入SQL語句,利用網(wǎng)站系統(tǒng)的漏洞來執(zhí)行該SQL語句,從而可以直接修改網(wǎng) 站后臺(tái)數(shù)據(jù),或者猜測(cè)出業(yè)務(wù)系統(tǒng)用戶帳號(hào)口令,或者猜測(cè)出數(shù)據(jù)庫管理員帳號(hào)口令等。而 現(xiàn)有的各種防護(hù)系統(tǒng)大都是通過提取用戶訪問動(dòng)態(tài)網(wǎng)頁而發(fā)送的URL,然后判斷URL中是 否包含SQL注入關(guān)鍵字,來檢測(cè)網(wǎng)站系統(tǒng)是否正在遭受SQL注入攻擊,如果判斷結(jié)果是URL 中包含了 SQL注入關(guān)鍵字,則認(rèn)定發(fā)送該URL的用戶正在進(jìn)行SQL注入攻擊,阻斷其訪問, 并發(fā)送警告頁面?,F(xiàn)有的網(wǎng)站系統(tǒng)SQL注入攻擊防護(hù)方法的實(shí)施流程如圖1和圖2所示,包括步驟S11、客戶通過瀏覽器向TOB服務(wù)器發(fā)起HTTP請(qǐng)求;S12、WEB服務(wù)器將來自瀏覽器的HTTP請(qǐng)求發(fā)給篩選器,篩選器進(jìn)行匹配處理,判 斷該請(qǐng)求是否包含SQL注入關(guān)鍵字;如果是轉(zhuǎn)到S17,否則執(zhí)行S13 ;S13、篩選器向TOB服務(wù)器發(fā)送確定沒有SQL注入攻擊的反饋消息;S14.WEB服務(wù)器向數(shù)據(jù)庫提交獲取數(shù)據(jù)請(qǐng)求消息;S15、數(shù)據(jù)庫接到WEB服務(wù)器的獲取數(shù)據(jù)請(qǐng)求消息后,將WEB服務(wù)器請(qǐng)求的數(shù)據(jù)返 回給WEB服務(wù)器;S16、WEB服務(wù)器接收到數(shù)據(jù)庫返回的數(shù)據(jù)后,向?yàn)g覽器發(fā)送正常HTTP響應(yīng)消息, 并將完整HTTP內(nèi)容發(fā)送給瀏覽器;S17、篩選器向TOB服務(wù)器發(fā)送檢測(cè)到SQL注入攻擊的反饋消息;S18、TOB服務(wù)器接收到來自篩選器的檢測(cè)到SQL注入攻擊的反饋消息后,將一個(gè)有警告內(nèi)容的HTTP網(wǎng)頁發(fā)送到瀏覽器。利用如上所述的現(xiàn)有的SQL注入攻擊檢測(cè)方法在檢測(cè)SQL注入攻擊時(shí),用戶每發(fā) 出一個(gè)訪問網(wǎng)頁的請(qǐng)求,篩選器都需要將用戶提交的URL或者URL攜帶的其他參數(shù)進(jìn)行SQL 注入關(guān)鍵字匹配處理,判斷是否存在SQL注入攻擊。篩選器將每次的用戶請(qǐng)求作為離散的 事件進(jìn)行處理,即用戶每提交一次訪問請(qǐng)求,篩選器都要進(jìn)行攻擊規(guī)則匹配處理,然后網(wǎng)站 系統(tǒng)根據(jù)匹配結(jié)果進(jìn)行相應(yīng)的處理。由于實(shí)際當(dāng)中正常訪問網(wǎng)站的用戶提供的訪問請(qǐng)求中 也可能偶爾包含有SQL注入關(guān)鍵字,這樣就可能將正常訪問網(wǎng)站的用戶錯(cuò)誤的認(rèn)定為攻擊 用戶而阻斷其對(duì)網(wǎng)站的合法訪問,造成誤報(bào),因此這種每當(dāng)出現(xiàn)SQL注入關(guān)鍵字即認(rèn)定為 SQL注入攻擊的SQL注入攻擊檢測(cè)方法,必然導(dǎo)致現(xiàn)有網(wǎng)站防護(hù)方法在其SQL注入攻擊檢測(cè) 過程中存在較高的誤報(bào)率。此外對(duì)于正在進(jìn)行SQL注入攻擊的惡意用戶不進(jìn)行及時(shí)阻斷訪 問,而是對(duì)其每次訪問請(qǐng)求都進(jìn)行SQL注入關(guān)鍵字匹配處理,也使得這種SQL注入攻擊檢測(cè) 方法的計(jì)算量很大,效率很低。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供一種SQL注入攻擊檢測(cè)方法及其裝置,以降低現(xiàn)有技術(shù)中對(duì) SQL注入攻擊檢測(cè)的誤報(bào)率。本發(fā)明實(shí)施例還提供一種SQL注入攻擊檢測(cè)方法及其裝置,以減小檢測(cè)SQL注入 攻擊的計(jì)算工作量,提高檢測(cè)效率。本發(fā)明實(shí)施例提供了一種SQL注入攻擊檢測(cè)方法,包括檢測(cè)用戶是否以相同的 訪問屬性信息、在規(guī)定時(shí)間長(zhǎng)度內(nèi)發(fā)送了規(guī)定次數(shù)的、攜帶有SQL注入關(guān)鍵字的用于請(qǐng)求 訪問相關(guān)網(wǎng)站的請(qǐng)求消息;若檢測(cè)結(jié)果為是,則認(rèn)定該用戶對(duì)該網(wǎng)站正在進(jìn)行SQL注入攻 擊;若檢測(cè)結(jié)果為否,則認(rèn)定該用戶未對(duì)該網(wǎng)站進(jìn)行SQL注入攻擊。本發(fā)明實(shí)施例提供了一種SQL注入攻擊檢測(cè)裝置,包括檢測(cè)單元,用于檢測(cè)用戶 是否以相同的訪問屬性信息、在規(guī)定時(shí)間長(zhǎng)度內(nèi)發(fā)送了規(guī)定次數(shù)的、攜帶有SQL注入關(guān)鍵 字的用于請(qǐng)求訪問相關(guān)網(wǎng)站的請(qǐng)求消息;認(rèn)定單元,用于在檢測(cè)單元的檢測(cè)結(jié)果為是時(shí),認(rèn) 定該用戶對(duì)該網(wǎng)站正在進(jìn)行SQL注入攻擊;以及在檢測(cè)單元的檢測(cè)結(jié)果為否時(shí),認(rèn)定該用 戶未對(duì)該網(wǎng)站進(jìn)行SQL注入攻擊。本發(fā)明實(shí)施例提供了一種SQL注入攻擊檢測(cè)方法,包括維護(hù)黑名單,該黑名單中 存儲(chǔ)有針對(duì)每個(gè)被認(rèn)定為對(duì)網(wǎng)站進(jìn)行SQL注入攻擊的用戶所使用的訪問屬性信息以及該 用戶被認(rèn)定為SQL注入攻擊時(shí)的時(shí)間信息的對(duì)應(yīng)關(guān)系;在檢測(cè)到發(fā)送用于請(qǐng)求訪問相關(guān)網(wǎng) 站的請(qǐng)求消息的用戶所使用的訪問屬性信息在所述黑名單存儲(chǔ)的訪問屬性信息之中、且當(dāng) 前時(shí)間與黑名單中存儲(chǔ)的與該用戶使用的訪問屬性信息對(duì)應(yīng)的時(shí)間信息之間的時(shí)間間隔 小于規(guī)定時(shí)長(zhǎng)時(shí),確定該用戶對(duì)該網(wǎng)站正在進(jìn)行SQL注入攻擊。本發(fā)明實(shí)施例提供了一種SQL注入攻擊檢測(cè)裝置,包括 黑名單維護(hù)單元,用于維護(hù)黑名單,所述黑名單中存儲(chǔ)有針對(duì)每個(gè)被認(rèn)定為對(duì)網(wǎng) 站進(jìn)行SQL注入攻擊的用戶所使用的訪問屬性信息以及該用戶被認(rèn)定為SQL注入攻擊時(shí)的 時(shí)間信息的對(duì)應(yīng)關(guān)系;檢測(cè)單元,用于檢測(cè)發(fā)送用于請(qǐng)求訪問相關(guān)網(wǎng)站的請(qǐng)求消息的用戶 所使用的訪問屬性信息是否在黑名單維護(hù)單元維護(hù)的黑名單存儲(chǔ)的訪問屬性信息之中、且 當(dāng)前時(shí)間與所述黑名單中存儲(chǔ)的與該用戶使用的訪問屬性信息對(duì)應(yīng)的時(shí)間信息之間的時(shí)間間隔小于規(guī)定時(shí)長(zhǎng);確定單元,用于在檢測(cè)單元的檢測(cè)結(jié)果為是時(shí),確定該用戶對(duì)該網(wǎng)站 正在進(jìn)行SQL注入攻擊。 本發(fā)明實(shí)施例提供的SQL注入攻擊檢測(cè)方法及其裝置是基于惡意人員進(jìn)行SQL注 入攻擊的行為特征,對(duì)用戶發(fā)送的請(qǐng)求訪問動(dòng)態(tài)網(wǎng)頁的請(qǐng)求消息中攜帶的SQL注入關(guān)鍵字 進(jìn)行累計(jì)計(jì)數(shù),規(guī)定時(shí)間長(zhǎng)度內(nèi),當(dāng)與該用戶發(fā)送該請(qǐng)求消息時(shí)使用的訪問屬性信息相應(yīng) 的SQL注入累計(jì)值達(dá)到限定值時(shí),認(rèn)定該用戶正在對(duì)網(wǎng)站實(shí)施SQL注入攻擊。本發(fā)明實(shí)施 例提供的SQL注入攻擊檢測(cè)方法及其裝置有效地克服現(xiàn)有的SQL檢測(cè)機(jī)制的缺陷,解決了 現(xiàn)有的SQL注入攻擊檢測(cè)方法中存在的高誤報(bào)率的問題。并且通過黑名單機(jī)制的引入,使 得在限定時(shí)長(zhǎng)的時(shí)間間隔內(nèi),認(rèn)定使用黑名單中記錄的訪問屬性信息發(fā)送請(qǐng)求消息的用戶 正在對(duì)網(wǎng)站進(jìn)行SQL注入攻擊,從而提高了檢測(cè)效率。
圖1是現(xiàn)有的網(wǎng)站系統(tǒng)針對(duì)SQL注入攻擊的防護(hù)方法流程圖;圖2是現(xiàn)有的網(wǎng)站系統(tǒng)針對(duì)SQL注入攻擊的防護(hù)方法流程圖;圖3是本發(fā)明實(shí)施例1提供的SQL注入攻擊檢測(cè)方法的流程圖;圖4是本發(fā)明實(shí)施例2提供的SQL注入攻擊檢測(cè)方法的流程圖;圖5是本發(fā)明實(shí)施例3提供的SQL注入攻擊檢測(cè)方法的流程圖;圖6是本發(fā)明實(shí)施例4提供的SQL注入攻擊檢測(cè)裝置的示意圖;圖7是本發(fā)明實(shí)施例5提供的SQL注入攻擊檢測(cè)裝置的示意圖;圖8是本發(fā)明實(shí)施例6提供的SQL注入攻擊檢測(cè)方法的流程圖;圖9是本發(fā)明實(shí)施例7提供的SQL注入攻擊檢測(cè)裝置的示意圖。
具體實(shí)施例方式本發(fā)明實(shí)施例提供了一種SQL注入檢測(cè)方法及其裝置,基于惡意攻擊用戶進(jìn)行 SQL注入攻擊的行為特征,對(duì)來自惡意攻擊用戶的SQL注入攻擊進(jìn)行檢測(cè)和篩選。該方法 一方面通過生成黑名單來記錄惡意攻擊用戶的訪問屬性信息以及該用戶被認(rèn)定為SQL注 入攻擊時(shí)的時(shí)間信息的對(duì)應(yīng)關(guān)系,來防御惡意攻擊用戶短時(shí)間、連續(xù)注入的攻擊行為,另一 方面通過在臨時(shí)存儲(chǔ)區(qū)域中對(duì)訪問用戶發(fā)送的訪問動(dòng)態(tài)網(wǎng)頁的請(qǐng)求中攜帶的SQL注入關(guān) 鍵字出現(xiàn)次數(shù)進(jìn)行累計(jì)記錄,并與規(guī)定次數(shù)進(jìn)行比較,高于規(guī)定次數(shù)時(shí)才認(rèn)定該用戶正在 對(duì)網(wǎng)站進(jìn)行SQL注入攻擊,從而提高SQL注入攻擊檢測(cè)的準(zhǔn)確率,為網(wǎng)站系統(tǒng)提供針對(duì)SQL 注入攻擊的更加完善的防護(hù),解決了現(xiàn)有的SQL注入攻擊檢測(cè)方法中存在的高誤報(bào)率的問 題。本發(fā)明實(shí)施例1提供了一種SQL注入攻擊檢測(cè)方法,其流程圖如圖3所示,包括S30、提取用戶發(fā)來的訪問動(dòng)態(tài)網(wǎng)頁的請(qǐng)求消息中攜帶的參數(shù);S31、將提取的參數(shù)與SQL注入關(guān)鍵字進(jìn)行匹配,判斷用戶發(fā)來的訪問動(dòng)態(tài)網(wǎng)頁的 請(qǐng)求消息中是否包含SQL注入關(guān)鍵字,如果存在轉(zhuǎn)到S32,否則轉(zhuǎn)到S38 ;S32、判斷臨時(shí)存儲(chǔ)區(qū)域內(nèi)記錄的用戶的訪問屬性信息是否包含有當(dāng)前用戶的訪 問屬性信息,其中用戶的訪問屬性信息包括但不限于為用戶所使用的源IP地址和/或源端 口號(hào)等,如果有轉(zhuǎn)到S33 ;否則轉(zhuǎn)到S35 ;
S33、判斷臨時(shí)存儲(chǔ)區(qū)域內(nèi)記錄的該用戶發(fā)送請(qǐng)求消息所使用的訪問屬性信息對(duì) 應(yīng)的時(shí)間信息TO與當(dāng)前時(shí)間T之間的時(shí)間間隔是否小于規(guī)定時(shí)長(zhǎng)T2,如果是,轉(zhuǎn)到S34;否 則轉(zhuǎn)到S36 ;其中T是用戶當(dāng)前發(fā)送請(qǐng)求消息的時(shí)間點(diǎn)信息;S34、將臨時(shí)存儲(chǔ)區(qū)域內(nèi)記錄的該用戶所使用的訪問屬性信息對(duì)應(yīng)的SQL注入累 計(jì)值counter加1,然后執(zhí)行步驟S37 ;S35、在臨時(shí)存儲(chǔ)區(qū)域內(nèi)存儲(chǔ)該用戶所使用的訪問屬性信息,并對(duì)應(yīng)該訪問屬性信 息存儲(chǔ)該用戶發(fā)送請(qǐng)求消息的時(shí)間信息,以及對(duì)應(yīng)該訪問屬性信息存儲(chǔ)對(duì)應(yīng)的SQL注入累 計(jì)值counter,并置1,然后執(zhí)行步驟S37 ;S36、將臨時(shí)存儲(chǔ)區(qū)域中存儲(chǔ)的該用戶所使用的訪問屬性信息對(duì)應(yīng)的時(shí)間信息TO 更新為當(dāng)前時(shí)間信息T,并將存儲(chǔ)的該用戶所使用的訪問屬性信息對(duì)應(yīng)的SQL注入累計(jì)值 counter置1,然后執(zhí)行步驟S37 ;步驟37,判斷在臨時(shí)存儲(chǔ)區(qū)域中存儲(chǔ)的用戶所使用的訪問屬性信息對(duì)應(yīng)的 counter值是否達(dá)到SQL注入累計(jì)閾值K,如果是轉(zhuǎn)到S39 ;否則轉(zhuǎn)到S38 ;S38、認(rèn)定該用戶未對(duì)該網(wǎng)站進(jìn)行SQL注入攻擊。S39、認(rèn)定該用戶正在對(duì)網(wǎng)站進(jìn)行SQL注入攻擊。用于SQL注入攻擊的關(guān)鍵字可以被分為在探測(cè)系統(tǒng)漏洞時(shí)使用的SQL注入探測(cè)關(guān) 鍵字和在實(shí)際攻擊系統(tǒng)漏洞時(shí)使用的SQL注入攻擊關(guān)鍵字。并且注入探測(cè)和注入攻擊經(jīng)常 是混在一起進(jìn)行的。所以對(duì)于SQL注入關(guān)鍵字的累計(jì)計(jì)數(shù)和判斷可以是針對(duì)SQL注入探測(cè) 關(guān)鍵字進(jìn)行的,或者是針對(duì)SQL注入攻擊關(guān)鍵字進(jìn)行的,或者是同時(shí)針對(duì)SQL注入探測(cè)關(guān)鍵 字和SQL注入攻擊關(guān)鍵字進(jìn)行的。其中將SQL注入關(guān)鍵字細(xì)分為SQL注入探測(cè)關(guān)鍵字和SQL 注入攻擊關(guān)鍵字之后,將臨時(shí)存儲(chǔ)區(qū)域內(nèi)記錄的SQL注入累計(jì)值counter具體分為SQL注 入探測(cè)累計(jì)值counterl和SQL注入攻擊累計(jì)值counter〗,在TOB服務(wù)器中記錄第一 SQL注 入探測(cè)累計(jì)閾值K1,第一 SQL注入攻擊累計(jì)閾值K2,第二 SQL注入探測(cè)累計(jì)閾值K3,第二 SQL注入攻擊累計(jì)閾值K4。單獨(dú)針對(duì)SQL注入探測(cè)關(guān)鍵字進(jìn)行累計(jì)和判斷時(shí),counterl與 第一 SQL注入探測(cè)累計(jì)閾值Kl進(jìn)行比較;單獨(dú)針對(duì)SQL注入攻擊關(guān)鍵字進(jìn)行累計(jì)和判斷 時(shí),counter2與第一 SQL注入探測(cè)累計(jì)閾值K2進(jìn)行比較;同時(shí)針對(duì)SQL注入探測(cè)關(guān)鍵字和 SQL注入攻擊關(guān)鍵字進(jìn)行累計(jì)和判斷時(shí),counterl與第二 SQL注入探測(cè)累計(jì)閾值K3進(jìn)行比 較并且coimterf與第二 SQL注入攻擊累計(jì)閾值K4進(jìn)行比較。本發(fā)明實(shí)施例2提供了一種 SQL注入攻擊檢測(cè)方法,該實(shí)施例給出了其中同時(shí)針對(duì)SQL注入探測(cè)關(guān)鍵字和SQL注入攻擊 關(guān)鍵字進(jìn)行累計(jì)計(jì)數(shù)和判斷的具體流程,具體如圖4所示,具體包括S40、提取用戶發(fā)來的訪問動(dòng)態(tài)網(wǎng)頁的請(qǐng)求消息中攜帶的參數(shù);S41、將提取的參數(shù)與SQL注入關(guān)鍵字進(jìn)行匹配,判斷用戶發(fā)來的訪問動(dòng)態(tài)網(wǎng)頁的 請(qǐng)求消息中是否包含SQL注入關(guān)鍵字,如果存在轉(zhuǎn)到S42,否則轉(zhuǎn)到S48 ;S42、判斷臨時(shí)存儲(chǔ)區(qū)域內(nèi)已記錄的用戶的訪問屬性信息中是否包含有當(dāng)前用戶 的訪問屬性信息,如果有轉(zhuǎn)到S43 ;否則轉(zhuǎn)到S45 ;S43、判斷臨時(shí)存儲(chǔ)區(qū)域內(nèi)記錄的該用戶發(fā)送請(qǐng)求消息所使用的訪問屬性信息對(duì) 應(yīng)的時(shí)間信息TO與當(dāng)前時(shí)間信息T之間的時(shí)間間隔是否小于規(guī)定時(shí)長(zhǎng)T2,如果是,轉(zhuǎn)到 S44 ;否則 轉(zhuǎn)到S46 ;S44、判斷用戶發(fā)送的請(qǐng)求消息中攜帶的SQL注入關(guān)鍵字類型,如果是SQL注入探測(cè)關(guān)鍵字,則在臨時(shí)存儲(chǔ)區(qū)域內(nèi)存儲(chǔ)的關(guān)聯(lián)該用戶所使用的訪問屬性信息的SQL注入探測(cè) 累計(jì)值coimterl加1,如果是SQL注入攻擊關(guān)鍵字則在臨時(shí)存儲(chǔ)區(qū)域內(nèi)存儲(chǔ)的關(guān)聯(lián)該用戶 所使用的訪問屬性信息的SQL注入探測(cè)累計(jì)值coimterf加1 ;然后執(zhí)行S47 ;S45、在臨時(shí)存儲(chǔ)區(qū)域內(nèi)將該用戶所使用的訪問屬性信息、該用戶發(fā)送請(qǐng)求消息的 時(shí)間信息對(duì)應(yīng)進(jìn)行存儲(chǔ),以及判斷用戶發(fā)送的請(qǐng)求消息中攜帶的SQL注入關(guān)鍵字的類型, 如果為SQL注入探測(cè)關(guān)鍵字則counterl置1,counter2置0,否則counterl置0,counter2 置1 ;轉(zhuǎn)到S47 ;S46、將臨時(shí)存儲(chǔ)區(qū)域中存儲(chǔ)的該用戶所使用的訪問屬性信息對(duì)應(yīng)的時(shí)間信息TO 更新為當(dāng)前時(shí)間信息T,以及判斷用戶發(fā)送的請(qǐng)求消息中攜帶的SQL注入關(guān)鍵字的類型,如 果為SQL注入探測(cè)關(guān)鍵字則將存儲(chǔ)的該用戶所使用的訪問屬性信息對(duì)應(yīng)的counterl置1, counter2置0,如果為SQL注入攻擊關(guān)鍵字則將存儲(chǔ)的該用戶所使用的訪問屬性信息對(duì)應(yīng) 的 counterl 置 0,counter2 置 1 ;轉(zhuǎn)到 S47 ;S47、判斷在臨時(shí)存儲(chǔ)區(qū)域中存儲(chǔ)的用戶所使用的訪問屬性信息對(duì)應(yīng)的counterl 值是否達(dá)到SQL注入探測(cè)累計(jì)閾值K3且對(duì)應(yīng)的counted值是否達(dá)到SQL注入攻擊累計(jì)閾 值K4,如果是轉(zhuǎn)到S49 ;否則轉(zhuǎn)到S48 ;S48、認(rèn)定該用戶未對(duì)該網(wǎng)站進(jìn)行SQL注入攻擊。S49、認(rèn)定該用戶正在對(duì)網(wǎng)站進(jìn)行SQL注入攻擊。以上實(shí)施例2提供的SQL注入攻擊檢測(cè)方法中應(yīng)用了前述介紹的對(duì)SQL注入關(guān)鍵 字累計(jì)次數(shù)進(jìn)行判斷的第三種方式。對(duì)于實(shí)際保護(hù)網(wǎng)站免受SQL注入攻擊時(shí),可以根據(jù)對(duì) 網(wǎng)站的保護(hù)程度要求的不同和網(wǎng)站容易受到攻擊的程度,對(duì)惡意用戶的SQL注入攻擊的檢 測(cè)方法可以使用上述三種方式的任意一種或者將三種方式結(jié)合使用。上述的K系列參數(shù)(包括K1、K2、K3、K4)是衡量SQL注入探測(cè)次數(shù)和SQL注入攻 擊次數(shù)的累計(jì)閾值,通過這些閾值來判斷疑似攻擊用戶的行為,如果在Tl時(shí)間間隔內(nèi),來 自使用臨時(shí)存儲(chǔ)區(qū)域記錄的訪問屬性信息的用戶的SQL注入探測(cè)累計(jì)值過多,達(dá)到K1,或 者SQL注入攻擊累計(jì)值過多,達(dá)到K2,則認(rèn)定當(dāng)前用戶正在進(jìn)行SQL注入攻擊;或者用戶注 入探測(cè)次數(shù)達(dá)到一定程度(達(dá)到K3)的同時(shí),注入攻擊次數(shù)也達(dá)到一定程度(達(dá)到K4),則 同樣認(rèn)定當(dāng)前用戶正在進(jìn)行SQL注入攻擊。一般來說,注入探測(cè)的目的是找到一個(gè)存在注入漏洞的URL,注入攻擊是對(duì)這個(gè) URL進(jìn)行攻擊,獲取數(shù)據(jù)庫數(shù)據(jù)或者賬號(hào)密碼等;如果只進(jìn)行探測(cè)不進(jìn)行攻擊,對(duì)網(wǎng)站的影 響比較小,因?yàn)檫€沒對(duì)數(shù)據(jù)庫等造成直接的篡改,所以K1、K3值相對(duì)可以較大;而在攻擊階 段有可能對(duì)數(shù)據(jù)庫造成篡改需要嚴(yán)格防護(hù),所以Κ2、Κ4的值相對(duì)Κ1、Κ3值較小,即有Kl > Κ2,Κ3 > Κ4。此外,單獨(dú)作用的閾值要高于共同作用的閾值,即Kl > Κ3,Κ2 > Κ4。 以上參數(shù)的設(shè)定是與TOB系統(tǒng)的應(yīng)用是否容易遭受攻擊,以及受保護(hù)的嚴(yán)格程度 相關(guān)的,如一個(gè)容易受攻擊的網(wǎng)站或者需要嚴(yán)格保護(hù)的網(wǎng)站,可以將Τ2設(shè)為10秒,將Kl設(shè) 為50次,Κ2設(shè)為30次(即10秒內(nèi)達(dá)到50次探測(cè),或30次攻擊,就可以認(rèn)定用戶正在對(duì) 網(wǎng)站進(jìn)行SQL攻擊),K3設(shè)為25次,K4設(shè)為15次(即10秒鐘內(nèi)達(dá)到25次探測(cè)并且達(dá)到 15次攻擊,就可以認(rèn)定用戶正在對(duì)網(wǎng)站進(jìn)行SQL攻擊);相反如果網(wǎng)站不很容易遭受攻擊, 可以將T2設(shè)為10秒,Kl為100次,K2設(shè)為60次(即10秒鐘內(nèi)達(dá)到100次探測(cè),或60次 攻擊,才認(rèn)定用戶正在對(duì)網(wǎng)站進(jìn)行SQL攻擊),K3設(shè)為50次,K4設(shè)為30次(即10秒鐘內(nèi)達(dá)到50次探測(cè)并且達(dá)到30次攻擊,才認(rèn)定用戶正在對(duì)網(wǎng)站進(jìn)行SQL攻擊)。上述的實(shí)施例通過對(duì)SQL注入關(guān)鍵字的累計(jì)計(jì)數(shù),并與相應(yīng)的限定閾值進(jìn)行比較 來判斷用戶是否正在對(duì)網(wǎng)站進(jìn)行SQL注入攻擊,有效地提高了判斷的準(zhǔn)確率,降低了 SQL注 入攻擊檢測(cè)方法的誤報(bào)率。在此基礎(chǔ)上,本發(fā)明的實(shí)施例3提供了一種SQL注入攻擊檢測(cè) 方法,該SQL注入攻擊檢測(cè)方法在實(shí)施例1給出的方法的基礎(chǔ)上增加維護(hù)黑名單的機(jī)制,在 WEB服務(wù)器中維護(hù)一個(gè)黑名單,其中黑名單中存儲(chǔ)有學(xué)習(xí)到的針對(duì)每個(gè)被認(rèn)定為對(duì)網(wǎng)站進(jìn) 行SQL注入攻擊的用戶所使用的訪問屬性信息以及該用戶被認(rèn)定為SQL注入攻擊時(shí)的時(shí)間 信息的對(duì)應(yīng)關(guān)系,這樣在WEB服務(wù)器接收到用戶發(fā)送的訪問請(qǐng)求消息后,首先判斷該用戶 發(fā)送該訪問請(qǐng)求使用的訪問屬性信息是否被記錄在黑名單中,如果不在黑名單中,或者在 黑名單中但當(dāng)前訪問時(shí)間與黑名單中對(duì)應(yīng)該用戶使用的訪問屬性信息記錄的時(shí)間信息之 間的時(shí)間間隔已經(jīng)超過了時(shí)長(zhǎng)閾值Tl,則再執(zhí)行上述實(shí)施例1或者實(shí)施例2提供的方法,以 判斷用戶是否正在對(duì)訪問的網(wǎng)站進(jìn)行SQL攻擊,可選的還可以進(jìn)而將黑名單中存儲(chǔ)的該用 戶使用的訪問屬性信息和對(duì)應(yīng)的時(shí)間信息刪除,以減小黑名單占用的存儲(chǔ)空間。此外當(dāng)該 用戶發(fā)送訪問請(qǐng)求使用的訪問屬性信息在黑名單中,并且當(dāng)前訪問時(shí)間與黑名單中對(duì)應(yīng)該 用戶使用的訪問屬性信息記錄的時(shí)間信息之間的時(shí)間間隔沒有超過時(shí)長(zhǎng)閾值Tl,則可以直 接認(rèn)定該用戶正在進(jìn)行SQL注入攻擊,并阻止其對(duì)動(dòng)態(tài)網(wǎng)頁的訪問。這樣在上述實(shí)施例1的基礎(chǔ)上,還可以在步驟S39中認(rèn)定該用戶正在對(duì)網(wǎng)站進(jìn)行 SQL注入攻擊之后,將該用戶使用的訪問屬性信息以及相應(yīng)的訪問時(shí)間信息Th對(duì)應(yīng)的添加 到黑名單,并將黑名單中記錄的該相應(yīng)的訪問時(shí)間信息Th置為用戶的當(dāng)前訪問時(shí)間T。具 體的流程示意圖如圖5所示,包括S51、判斷當(dāng)前用戶發(fā)送訪問請(qǐng)求信息所利用的訪問屬性信息是否記錄在黑名單 中,如果是轉(zhuǎn)到S52 ;否則轉(zhuǎn)到S31,后續(xù)執(zhí)行過程請(qǐng)參照上述實(shí)施例1中的具體描述; S52、判斷當(dāng)前訪問時(shí)間T與黑名單中記錄的與用戶所利用的訪問屬性信息對(duì)應(yīng) 的訪問時(shí)間信息Th之間的時(shí)間間隔是否超過時(shí)間閾值T2,如果超過則轉(zhuǎn)到S53 ;否則轉(zhuǎn)到 S54 ;S53、在黑名單中清除該用戶發(fā)送網(wǎng)頁訪問請(qǐng)求信息所使用的訪問屬性信息和相 應(yīng)的訪問時(shí)間信息Th,然后轉(zhuǎn)到S31,后續(xù)執(zhí)行過程請(qǐng)參照上述實(shí)施例1中的具體描述;S54、認(rèn)定該用戶對(duì)該網(wǎng)站正在進(jìn)行SQL注入攻擊,處理過程結(jié)束;S55、在上述實(shí)施例1中S39執(zhí)行完后,在黑名單中添加該用戶發(fā)送訪問請(qǐng)求信息 所使用的訪問屬性信息以及對(duì)應(yīng)的該用戶被認(rèn)定為SQL注入攻擊時(shí)的時(shí)間信息Th。由以上本發(fā)明公開的實(shí)施例可知,本發(fā)明實(shí)施例提供的SQL注入攻擊檢測(cè)方法簡(jiǎn) 單易行,對(duì)現(xiàn)有的網(wǎng)站防護(hù)系統(tǒng)軟件的結(jié)構(gòu)改變不多,有很強(qiáng)的實(shí)際操作性,從而使得本發(fā) 明實(shí)施例提供的SQL注入檢測(cè)方法能夠有效防止惡意人員利用SQL注入攻擊方法篡改網(wǎng)頁 系統(tǒng)的頁面或者篡改業(yè)務(wù)系統(tǒng)的相關(guān)數(shù)據(jù)。對(duì)應(yīng)發(fā)明實(shí)施例提供的上述SQL注入攻擊檢測(cè)方法,本發(fā)明還提供了以下的SQL 注入攻擊檢測(cè)裝置的實(shí)施例。其中本發(fā)明實(shí)施例4提供的SQL注入攻擊檢測(cè)裝置如圖6所示,包括檢測(cè)單元61,用于檢測(cè)用戶是否以相同的訪問屬性信息、在規(guī)定時(shí)間長(zhǎng)度內(nèi)發(fā)送 了規(guī)定次數(shù)的、攜帶有SQL注入關(guān)鍵字的用于請(qǐng)求訪問相關(guān)網(wǎng)站的通用資源定位符URL請(qǐng)求消息;認(rèn)定單元62,用于在檢測(cè)單元的檢測(cè)結(jié)果為是時(shí),認(rèn)定該用戶對(duì)該網(wǎng)站正在進(jìn)行 SQL注入攻擊;以及在檢測(cè)單元的檢測(cè)結(jié)果為否時(shí),認(rèn)定該用戶未對(duì)該網(wǎng)站進(jìn)行SQL注入攻
擊ο其中檢測(cè)單元具體包括第一判斷子單元611,用于在用戶發(fā)送的用于請(qǐng)求訪問相關(guān)網(wǎng)站的URL請(qǐng)求消息 中攜帶SQL注入關(guān)鍵詞時(shí),判斷在臨時(shí)存儲(chǔ)區(qū)域中是否能夠查找到該用戶發(fā)送所述URL請(qǐng) 求消息所使用的訪問屬性信息;存儲(chǔ)子單元612,用于在第一判斷子單元的判斷結(jié)果為否時(shí),在臨時(shí)存儲(chǔ)區(qū)域中存 儲(chǔ)該用戶所使用的訪問屬性信息以及該用戶發(fā)送所述URL請(qǐng)求消息的時(shí)間信息的對(duì)應(yīng)關(guān) 系,并將存儲(chǔ)的該用戶所使用的訪問屬性信息對(duì)應(yīng)的SQL注入累計(jì)值置1 ;第二判斷子單元613,用于在第一判斷子單元的判斷結(jié)果為是時(shí),判斷當(dāng)前時(shí)間與 臨時(shí)存儲(chǔ)區(qū)域中存儲(chǔ)的該用戶發(fā)送所述URL請(qǐng)求消息所使用的訪問屬性信息對(duì)應(yīng)的時(shí)間 信息之間的時(shí)間間隔是否小于第二規(guī)定時(shí)長(zhǎng);累計(jì)值處理子單元614,用于在第二判斷子單元的判斷結(jié)果為是時(shí),將臨時(shí)存儲(chǔ)區(qū) 域中存儲(chǔ)的該用戶發(fā)送所述URL請(qǐng)求消息所使用的訪問屬性信息對(duì)應(yīng)的SQL注入累計(jì)值加 1 ;以及在第二判斷子單元的判斷結(jié)果為否時(shí),將臨時(shí)存儲(chǔ)區(qū)域中存儲(chǔ)的該用戶發(fā)送所述 URL請(qǐng)求消息所使用的訪問屬性信息對(duì)應(yīng)的SQL注入累計(jì)值清零;第三判斷子單元615,用于在經(jīng)存儲(chǔ)子單元或累計(jì)值處理子單元對(duì)SQL注入累計(jì) 值進(jìn)行處理后,判斷臨時(shí)存儲(chǔ)區(qū)域中存儲(chǔ)的該用戶發(fā)送所述URL請(qǐng)求消息所使用的訪問屬 性信息對(duì)應(yīng)的SQL注入累計(jì)值是否達(dá)到規(guī)定閾值;確定子單元616,用于在第三判斷子單元的判斷結(jié)果為是時(shí),確定檢測(cè)結(jié)果為是, 以及在第三判斷子單元的判斷結(jié)果為否時(shí),確定檢測(cè)結(jié)果為否。針對(duì)增加了黑名單機(jī)制的本發(fā)明實(shí)施例3提供的檢測(cè)方法,本發(fā)明實(shí)施例5對(duì)應(yīng) 的提供了一種SQL注入攻擊檢測(cè)裝置,如圖7所示,包括檢測(cè)單元71,用于檢測(cè)用戶是否以相同的訪問屬性信息、在規(guī)定時(shí)間長(zhǎng)度內(nèi)發(fā)送 了規(guī)定次數(shù)的、攜帶有SQL注入關(guān)鍵字的用于請(qǐng)求訪問相關(guān)網(wǎng)站的通用資源定位符URL請(qǐng) 求消息;認(rèn)定單元72,用于在檢測(cè)單元的檢測(cè)結(jié)果為是時(shí),認(rèn)定該用戶對(duì)該網(wǎng)站正在進(jìn)行 SQL注入攻擊;以及在檢測(cè)單元的檢測(cè)結(jié)果為否時(shí),認(rèn)定該用戶未對(duì)該網(wǎng)站進(jìn)行SQL注入攻
擊ο 黑名單維護(hù)單元73,用于維護(hù)黑名單,所述黑名單中存儲(chǔ)有針對(duì)每個(gè)被認(rèn)定為對(duì) 網(wǎng)站進(jìn)行SQL注入攻擊的用戶所使用的訪問屬性信息以及該用戶被認(rèn)定為SQL注入攻擊時(shí) 的時(shí)間信息的對(duì)應(yīng)關(guān)系;確定單元74,用于在檢測(cè)單元檢測(cè)用戶之前,確定出用戶使用的相同的訪問屬性 信息不在黑名單維護(hù)單元維護(hù)的黑名單存儲(chǔ)的訪問屬性信息之中;或者確定出用戶使用的 相同的訪問屬性信息在黑名單維護(hù)單元維護(hù)的黑名單存儲(chǔ)的訪問屬性信息之中、且當(dāng)前時(shí) 間與所述黑名單中存儲(chǔ)的與用戶使用的相同的訪問屬性信息對(duì)應(yīng)的時(shí)間信息之間的時(shí)間間隔不小于第一規(guī)定時(shí)長(zhǎng);存儲(chǔ)單元75,用于在認(rèn)定單元認(rèn)定該用戶對(duì)該網(wǎng)站正在進(jìn)行SQL注入攻擊后,將 該用戶使用的相同的訪問屬性信息以及該用戶被認(rèn)定為對(duì)該網(wǎng)站正在進(jìn)行SQL注入攻擊 的時(shí)間信息對(duì)應(yīng)地存儲(chǔ)到黑名單維護(hù)單元維護(hù)的黑名單中。刪除單元76,用于在確定單元確定出用戶使用的相同的訪問屬性信息在黑名單存 儲(chǔ)的訪問屬性信息之中、且當(dāng)前時(shí)間與黑名單中存儲(chǔ)的與用戶使用的相同的訪問屬性信息 對(duì)應(yīng)的時(shí)間信息之間的時(shí)間間隔不小于第一規(guī)定時(shí)長(zhǎng)時(shí),刪除黑名單維護(hù)單元維護(hù)的黑名 單中存儲(chǔ)的用戶使用的相同的訪問屬性信息及其對(duì)應(yīng)的時(shí)間信息。對(duì)應(yīng)于黑名單機(jī)制的應(yīng)用,本發(fā)明實(shí)施例6提供了一種SQL注入攻擊檢測(cè)方法,如 圖8所示,包括 S81、維護(hù)黑名單,所述黑名單中存儲(chǔ)有針對(duì)每個(gè)被認(rèn)定為對(duì)網(wǎng)站進(jìn)行SQL注入攻 擊的用戶所使用的訪問屬性信息以及該用戶被認(rèn)定為SQL注入攻擊時(shí)的時(shí)間信息的對(duì)應(yīng) 關(guān)系;其中黑名單的維護(hù)過程可以但不限于為檢測(cè)用戶是否以相同的訪問屬性信息、在 規(guī)定時(shí)間長(zhǎng)度內(nèi)發(fā)送了規(guī)定次數(shù)的、攜帶有SQL注入關(guān)鍵字的用于請(qǐng)求訪問相關(guān)網(wǎng)站的請(qǐng) 求消息;在檢測(cè)結(jié)果為是時(shí),認(rèn)定該用戶對(duì)該網(wǎng)站正在進(jìn)行SQL注入攻擊,并將該用戶所使 用的訪問屬性信息以及認(rèn)定該用戶對(duì)該網(wǎng)站正在進(jìn)行SQL注入攻擊的時(shí)間信息對(duì)應(yīng)存儲(chǔ) 到所述黑名單中,該過程的具體實(shí)現(xiàn)過程請(qǐng)參照上述實(shí)施例1和實(shí)施例2中的描述,這里不 再贅述。S82、在檢測(cè)到發(fā)送用于請(qǐng)求訪問相關(guān)網(wǎng)站的請(qǐng)求消息的用戶所使用的訪問屬性 信息在上述維護(hù)的黑名單存儲(chǔ)的訪問屬性信息之中、且當(dāng)前時(shí)間與黑名單中存儲(chǔ)的與該用 戶使用的訪問屬性信息對(duì)應(yīng)的時(shí)間信息之間的時(shí)間間隔小于規(guī)定時(shí)長(zhǎng)Tl時(shí),直接確定該 用戶對(duì)該網(wǎng)站正在進(jìn)行SQL注入攻擊,從而相對(duì)現(xiàn)有技術(shù)提高檢測(cè)的效率。對(duì)應(yīng)本發(fā)明實(shí)施例7提供的SQL注入攻擊檢測(cè)方法,本發(fā)明的實(shí)施例7提供了對(duì) 應(yīng)的SQL注入攻擊檢測(cè)裝置,如圖9所示,包括黑名單維護(hù)單元91,用于維護(hù)黑名單,所述黑名單中存儲(chǔ)有針對(duì)每個(gè)被認(rèn)定為對(duì) 網(wǎng)站進(jìn)行SQL注入攻擊的用戶所使用的訪問屬性信息以及該用戶被認(rèn)定為SQL注入攻擊時(shí) 的時(shí)間信息的對(duì)應(yīng)關(guān)系;檢測(cè)單元92,用于檢測(cè)發(fā)送用于請(qǐng)求訪問相關(guān)網(wǎng)站的通用資源定位符URL請(qǐng)求消 息的用戶所使用的訪問屬性信息是否在黑名單維護(hù)單元維護(hù)的黑名單存儲(chǔ)的訪問屬性信 息之中、且當(dāng)前時(shí)間與所述黑名單中存儲(chǔ)的與該用戶使用的訪問屬性信息對(duì)應(yīng)的時(shí)間信息 之間的時(shí)間間隔小于規(guī)定時(shí)長(zhǎng);確定單元93,用于在檢測(cè)單元的檢測(cè)結(jié)果為是時(shí),確定該用戶對(duì)該網(wǎng)站正在進(jìn)行 SQL注入攻擊。其中黑名單維護(hù)單元91又被具體分為檢測(cè)子單元911,用于檢測(cè)用戶是否以相同的訪問屬性信息、在規(guī)定時(shí)間長(zhǎng)度內(nèi)發(fā) 送了規(guī)定次數(shù)的、攜帶有SQL注入關(guān)鍵字的用于請(qǐng)求訪問相關(guān)網(wǎng)站的請(qǐng)求消息;維護(hù)子單元912,用于在檢測(cè)子單元的檢測(cè)結(jié)果為是時(shí),認(rèn)定該用戶對(duì)該網(wǎng)站正在 進(jìn)行SQL注入攻擊,并將該用戶所使用的訪問屬性信息以及認(rèn)定該用戶對(duì)該網(wǎng)站正在進(jìn)行 SQL注入攻擊的時(shí)間信息對(duì)應(yīng)存儲(chǔ)到所述黑名單中。
顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍 之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。
權(quán)利要求
1.一種SQL注入攻擊檢測(cè)方法,其特征在于,包括檢測(cè)用戶是否以相同的訪問屬性信息、在規(guī)定時(shí)間長(zhǎng)度內(nèi)發(fā)送了規(guī)定次數(shù)的、攜帶有 SQL注入關(guān)鍵字的用于請(qǐng)求訪問相關(guān)網(wǎng)站的請(qǐng)求消息;若檢測(cè)結(jié)果為是,則認(rèn)定該用戶對(duì)該網(wǎng)站正在進(jìn)行SQL注入攻擊;若檢測(cè)結(jié)果為否,則認(rèn)定該用戶未對(duì)該網(wǎng)站進(jìn)行SQL注入攻擊。
2.如權(quán)利要求1所述的方法,其特征在于,還包括維護(hù)黑名單的步驟,所述黑名單中存 儲(chǔ)有針對(duì)每個(gè)被認(rèn)定為對(duì)網(wǎng)站進(jìn)行SQL注入攻擊的用戶所使用的訪問屬性信息以及該用 戶被認(rèn)定為SQL注入攻擊時(shí)的時(shí)間信息的對(duì)應(yīng)關(guān)系;檢測(cè)用戶過程之前,還包括確定出用戶使用的相同的訪問屬性信息不在所述黑名單存儲(chǔ)的訪問屬性信息之中;或者確定出用戶使用的相同的訪問屬性信息在所述黑名單存儲(chǔ)的訪問屬性信息之中、且當(dāng) 前時(shí)間與所述黑名單中存儲(chǔ)的與用戶使用的相同的訪問屬性信息對(duì)應(yīng)的時(shí)間信息之間的 時(shí)間間隔不小于第一規(guī)定時(shí)長(zhǎng);
3.如權(quán)利要求2所述的方法,其特征在于,在認(rèn)定該用戶對(duì)該網(wǎng)站正在進(jìn)行SQL注入攻 擊后,還包括將該用戶使用的相同的訪問屬性信息以及該用戶被認(rèn)定為對(duì)該網(wǎng)站正在進(jìn)行SQL注 入攻擊的時(shí)間信息對(duì)應(yīng)地存儲(chǔ)到所述黑名單中。
4.如權(quán)利要求2所述的方法,其特征在于,在確定出用戶使用的相同的訪問屬性信息 在黑名單存儲(chǔ)的訪問屬性信息之中、且當(dāng)前時(shí)間與黑名單中存儲(chǔ)的與用戶使用的相同的訪 問屬性信息對(duì)應(yīng)的時(shí)間信息之間的時(shí)間間隔不小于第一規(guī)定時(shí)長(zhǎng)時(shí),還包括刪除所述黑名 單中存儲(chǔ)的用戶使用的相同的訪問屬性信息及其對(duì)應(yīng)的時(shí)間信息。
5.如權(quán)利要求1所述的方法,其特征在于,檢測(cè)用戶是否以相同的訪問屬性信息、在規(guī) 定時(shí)間長(zhǎng)度內(nèi)發(fā)送了規(guī)定次數(shù)的、攜帶有SQL注入關(guān)鍵字的用于請(qǐng)求訪問相關(guān)網(wǎng)站的請(qǐng)求 消息,具體包括在用戶發(fā)送的用于請(qǐng)求訪問相關(guān)網(wǎng)站的請(qǐng)求消息中攜帶SQL注入關(guān)鍵詞時(shí),判斷在臨 時(shí)存儲(chǔ)區(qū)域中是否能夠查找到該用戶發(fā)送所述請(qǐng)求消息所使用的訪問屬性信息,若否則在 臨時(shí)存儲(chǔ)區(qū)域中存儲(chǔ)該用戶所使用的訪問屬性信息以及該用戶發(fā)送所述請(qǐng)求消息的時(shí)間 信息的對(duì)應(yīng)關(guān)系,并將存儲(chǔ)的該用戶所使用的訪問屬性信息對(duì)應(yīng)的SQL注入累計(jì)值置1 ;若 是則判斷當(dāng)前時(shí)間與臨時(shí)存儲(chǔ)區(qū)域中存儲(chǔ)的該用戶發(fā)送所述請(qǐng)求消息所使用的訪問屬性 信息對(duì)應(yīng)的時(shí)間信息之間的時(shí)間間隔是否小于第二規(guī)定時(shí)長(zhǎng),若是則將臨時(shí)存儲(chǔ)區(qū)域中存 儲(chǔ)的該用戶發(fā)送所述請(qǐng)求消息所使用的訪問屬性信息對(duì)應(yīng)的SQL注入累計(jì)值加1 ;若否則將臨時(shí)存儲(chǔ)區(qū)域中存儲(chǔ)的該用戶發(fā)送所述請(qǐng)求消息所使用的訪問屬性信息對(duì)應(yīng)的時(shí) 間信息修改為當(dāng)前時(shí)間信息,并將對(duì)應(yīng)的SQL注入累計(jì)值置1 ;判斷臨時(shí)存儲(chǔ)區(qū)域中存儲(chǔ)的該用戶發(fā)送所述請(qǐng)求消息所使用的訪問屬性信息對(duì)應(yīng)的 SQL注入累計(jì)值是否達(dá)到規(guī)定閾值,若是則確定所述檢測(cè)結(jié)果為是,若否在確定所述檢測(cè)結(jié) 果為否。
6.如權(quán)利要求5所述的方法,其特征在于,所述SQL注入關(guān)鍵字為SQL注入探測(cè)關(guān)鍵字,所述SQL注入累計(jì)值為SQL注入探測(cè)累計(jì)值;或所述SQL注入關(guān)鍵字為SQL注入攻擊關(guān)鍵字,所述SQL注入累計(jì)值為SQL注入攻擊累 計(jì)值;或所述SQL注入關(guān)鍵字包括SQL注入探測(cè)累計(jì)值和SQL注入攻擊關(guān)鍵字,所述SQL注入 累計(jì)值包括SQL注入探測(cè)累計(jì)值和SQL注入攻擊累計(jì)值。
7.如1 6任一權(quán)利要求所述的方法,其特征在于,所述訪問屬性信息包括源IP地址 和源端口號(hào)。
8.一種SQL注入攻擊檢測(cè)裝置,其特征在于,包括檢測(cè)單元,用于檢測(cè)用戶是否以相同的訪問屬性信息、在規(guī)定時(shí)間長(zhǎng)度內(nèi)發(fā)送了規(guī)定 次數(shù)的、攜帶有SQL注入關(guān)鍵字的用于請(qǐng)求訪問相關(guān)網(wǎng)站的請(qǐng)求消息;認(rèn)定單元,用于在檢測(cè)單元的檢測(cè)結(jié)果為是時(shí),認(rèn)定該用戶對(duì)該網(wǎng)站正在進(jìn)行SQL注 入攻擊;以及在檢測(cè)單元的檢測(cè)結(jié)果為否時(shí),認(rèn)定該用戶未對(duì)該網(wǎng)站進(jìn)行SQL注入攻擊。
9.如權(quán)利要求8所述的裝置,其特征在于,還包括黑名單維護(hù)單元,用于維護(hù)黑名單,所述黑名單中存儲(chǔ)有針對(duì)每個(gè)被認(rèn)定為對(duì)網(wǎng)站進(jìn) 行SQL注入攻擊的用戶所使用的訪問屬性信息以及該用戶被認(rèn)定為SQL注入攻擊時(shí)的時(shí)間 信息的對(duì)應(yīng)關(guān)系;確定單元,用于在檢測(cè)單元檢測(cè)用戶之前,確定出用戶使用的相同的訪問屬性信息不 在黑名單維護(hù)單元維護(hù)的黑名單存儲(chǔ)的訪問屬性信息之中;或者確定出用戶使用的相同的訪問屬性信息在黑名單維護(hù)單元維護(hù)的黑名單存儲(chǔ)的訪問 屬性信息之中、且當(dāng)前時(shí)間與所述黑名單中存儲(chǔ)的與用戶使用的相同的訪問屬性信息對(duì)應(yīng) 的時(shí)間信息之間的時(shí)間間隔不小于第一規(guī)定時(shí)長(zhǎng);
10.如權(quán)利要求9所述的裝置,其特征在于,還包括存儲(chǔ)單元,用于在認(rèn)定單元認(rèn)定該用戶對(duì)該網(wǎng)站正在進(jìn)行SQL注入攻擊后,將該用戶 使用的相同的訪問屬性信息以及該用戶被認(rèn)定為對(duì)該網(wǎng)站正在進(jìn)行SQL注入攻擊的時(shí)間 信息對(duì)應(yīng)地存儲(chǔ)到黑名單維護(hù)單元維護(hù)的黑名單中。
11.如權(quán)利要求9所述的裝置,其特征在于,還包括刪除單元,用于在確定單元確定出 用戶使用的相同的訪問屬性信息在黑名單存儲(chǔ)的訪問屬性信息之中、且當(dāng)前時(shí)間與黑名單 中存儲(chǔ)的與用戶使用的相同的訪問屬性信息對(duì)應(yīng)的時(shí)間信息之間的時(shí)間間隔不小于第一 規(guī)定時(shí)長(zhǎng)時(shí),刪除黑名單維護(hù)單元維護(hù)的黑名單中存儲(chǔ)的用戶使用的相同的訪問屬性信息 及其對(duì)應(yīng)的時(shí)間信息。
12.如權(quán)利要求8所述的裝置,其特征在于,所述檢測(cè)單元具體包括第一判斷子單元,用于在用戶發(fā)送的用于請(qǐng)求訪問相關(guān)網(wǎng)站的請(qǐng)求消息中攜帶SQL注 入關(guān)鍵詞時(shí),判斷在臨時(shí)存儲(chǔ)區(qū)域中是否能夠查找到該用戶發(fā)送所述請(qǐng)求消息所使用的訪 問屬性信息;存儲(chǔ)子單元,用于在第一判斷子單元的判斷結(jié)果為否時(shí),在臨時(shí)存儲(chǔ)區(qū)域中存儲(chǔ)該用 戶所使用的訪問屬性信息以及該用戶發(fā)送所述請(qǐng)求消息的時(shí)間信息的對(duì)應(yīng)關(guān)系,并將存儲(chǔ) 的該用戶所使用的訪問屬性信息對(duì)應(yīng)的SQL注入累計(jì)值置1 ;第二判斷子單元,用于在第一判斷子單元的判斷結(jié)果為是時(shí),判斷當(dāng)前時(shí)間與臨時(shí)存儲(chǔ)區(qū)域中存儲(chǔ)的該用戶發(fā)送所述請(qǐng)求消息所使用的訪問屬性信息對(duì)應(yīng)的時(shí)間信息之間的 時(shí)間間隔是否小于第二規(guī)定時(shí)長(zhǎng);累計(jì)值處理子單元,用于在第二 判斷子單元的判斷結(jié)果為是時(shí),將臨時(shí)存儲(chǔ)區(qū)域中存 儲(chǔ)的該用戶發(fā)送所述請(qǐng)求消息所使用的訪問屬性信息對(duì)應(yīng)的SQL注入累計(jì)值加1 ;以及在第二判斷子單元的判斷結(jié)果為否時(shí),將臨時(shí)存儲(chǔ)區(qū)域中存儲(chǔ)的該用戶發(fā)送所述請(qǐng)求 消息所使用的訪問屬性信息對(duì)應(yīng)的時(shí)間信息修改為當(dāng)前時(shí)間信息,并將對(duì)應(yīng)的SQL注入累 計(jì)值置1 ;第三判斷子單元,用于在經(jīng)存儲(chǔ)子單元或累計(jì)值處理子單元對(duì)SQL注入累計(jì)值進(jìn)行處 理后,判斷臨時(shí)存儲(chǔ)區(qū)域中存儲(chǔ)的該用戶發(fā)送所述請(qǐng)求消息所使用的訪問屬性信息對(duì)應(yīng)的 SQL注入累計(jì)值是否達(dá)到規(guī)定閾值;確定子單元,用于在第三判斷子單元的判斷結(jié)果為是時(shí),確定檢測(cè)結(jié)果為是,以及在第 三判斷子單元的判斷結(jié)果為否時(shí),確定檢測(cè)結(jié)果為否。
13.一種SQL注入攻擊檢測(cè)方法,其特征在于,包括維護(hù)黑名單,所述黑名單中存儲(chǔ)有針對(duì)每個(gè)被認(rèn)定為對(duì)網(wǎng)站進(jìn)行SQL注入攻擊的用戶 所使用的訪問屬性信息以及該用戶被認(rèn)定為SQL注入攻擊時(shí)的時(shí)間信息的對(duì)應(yīng)關(guān)系;在檢測(cè)到發(fā)送用于請(qǐng)求訪問相關(guān)網(wǎng)站的請(qǐng)求消息的用戶所使用的訪問屬性信息在所 述黑名單存儲(chǔ)的訪問屬性信息之中、且當(dāng)前時(shí)間與所述黑名單中存儲(chǔ)的與該用戶使用的訪 問屬性信息對(duì)應(yīng)的時(shí)間信息之間的時(shí)間間隔小于規(guī)定時(shí)長(zhǎng)時(shí),確定該用戶對(duì)該網(wǎng)站正在進(jìn) 行SQL注入攻擊。
14.如權(quán)利要求13所述的方法,其特征在于,維護(hù)黑名單的過程具體包括檢測(cè)用戶是否以相同的訪問屬性信息、在規(guī)定時(shí)間長(zhǎng)度內(nèi)發(fā)送了規(guī)定次數(shù)的、攜帶有 SQL注入關(guān)鍵字的用于請(qǐng)求訪問相關(guān)網(wǎng)站的請(qǐng)求消息;在檢測(cè)結(jié)果為是時(shí),認(rèn)定該用戶對(duì)該網(wǎng)站正在進(jìn)行SQL注入攻擊,并將該用戶所使用 的訪問屬性信息以及認(rèn)定該用戶對(duì)該網(wǎng)站正在進(jìn)行SQL注入攻擊的時(shí)間信息對(duì)應(yīng)存儲(chǔ)到 所述黑名單中。
15.如權(quán)利要求13或14所述的方法,其特征在于,所述SQL注入關(guān)鍵字為SQL注入探 測(cè)關(guān)鍵字,或?yàn)镾QL注入攻擊關(guān)鍵字、或?yàn)镾QL注入探測(cè)關(guān)鍵字和SQL注入攻擊關(guān)鍵字。
16.如權(quán)利要求13或14所述的方法,其特征在于,所述訪問屬性信息包括源IP地址和源端口號(hào)。
17.一種SQL注入攻擊檢測(cè)裝置,其特征在于,包括黑名單維護(hù)單元,用于維護(hù)黑名單,所述黑名單中存儲(chǔ)有針對(duì)每個(gè)被認(rèn)定為對(duì)網(wǎng)站進(jìn) 行SQL注入攻擊的用戶所使用的訪問屬性信息以及該用戶被認(rèn)定為SQL注入攻擊時(shí)的時(shí)間 信息的對(duì)應(yīng)關(guān)系;檢測(cè)單元,用于檢測(cè)發(fā)送用于請(qǐng)求訪問相關(guān)網(wǎng)站的請(qǐng)求消息的用戶所使用的訪問屬性 信息是否在黑名單維護(hù)單元維護(hù)的黑名單存儲(chǔ)的訪問屬性信息之中、且當(dāng)前時(shí)間與所述黑 名單中存儲(chǔ)的與該用戶使用的訪問屬性信息對(duì)應(yīng)的時(shí)間信息之間的時(shí)間間隔小于規(guī)定時(shí) 長(zhǎng);確定單元,用于在檢測(cè)單元的檢測(cè)結(jié)果為是時(shí),確定該用戶對(duì)該網(wǎng)站正在進(jìn)行SQL注 入攻擊。
18.如權(quán)利要求17所述的裝置,其特征在于,所述黑名單維護(hù)單元具體包括 檢測(cè)子單元,用于檢測(cè)用戶是否以相同的訪問屬性信息、在規(guī)定時(shí)間長(zhǎng)度內(nèi)發(fā)送了規(guī) 定次數(shù)的、攜帶有SQL注入關(guān)鍵字的用于請(qǐng)求訪問相關(guān)網(wǎng)站的請(qǐng)求消息;維護(hù)子單元,用于在檢測(cè)子單元的檢測(cè)結(jié)果為是時(shí),認(rèn)定該用戶對(duì)該網(wǎng)站正在進(jìn)行SQL 注入攻擊,并將該用戶所使用的訪問屬性信息以及認(rèn)定該用戶對(duì)該網(wǎng)站正在進(jìn)行SQL注入 攻擊的時(shí)間信息對(duì)應(yīng)存儲(chǔ)到所述黑名單中。
全文摘要
本發(fā)明公開了一種SQL注入攻擊檢測(cè)方法,包括檢測(cè)用戶是否以相同的訪問屬性信息、在規(guī)定時(shí)間長(zhǎng)度內(nèi)發(fā)送了規(guī)定次數(shù)的、攜帶有SQL注入關(guān)鍵字的用于請(qǐng)求訪問相關(guān)網(wǎng)站的通用資源定位符URL請(qǐng)求消息;若檢測(cè)結(jié)果為是,則認(rèn)定該用戶對(duì)該網(wǎng)站正在進(jìn)行SQL注入攻擊;若檢測(cè)結(jié)果為否,則認(rèn)定該用戶未對(duì)該網(wǎng)站進(jìn)行SQL注入攻擊。本發(fā)明實(shí)施例相應(yīng)的公開了SQL注入攻擊檢測(cè)裝置。本發(fā)明實(shí)施例提供的SQL注入攻擊檢測(cè)方法及其裝置是基于惡意人員進(jìn)行SQL注入攻擊的行為特征,有效地克服現(xiàn)有的SQL檢測(cè)機(jī)制的缺陷,解決了現(xiàn)有的SQL注入攻擊檢測(cè)方法中存在的高誤報(bào)率的問題。
文檔編號(hào)H04L29/06GK102045319SQ20091020671
公開日2011年5月4日 申請(qǐng)日期2009年10月21日 優(yōu)先權(quán)日2009年10月21日
發(fā)明者位蒞, 曹承祖, 王自亮 申請(qǐng)人:中國(guó)移動(dòng)通信集團(tuán)山東有限公司