專利名稱:一種sql注入檢測方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種SQL注入檢測方法及裝置。
背景技術(shù):
隨著B/S (瀏覽器/服務(wù)器)模式應(yīng)用開發(fā)的發(fā)展,使用這種模式編寫應(yīng)用程序的程序員越來越多,但是,由于大部分程序員在編寫代碼的時(shí)候,沒有對客戶端側(cè)用戶輸入數(shù)據(jù)的合法性進(jìn)行檢測,使得應(yīng)用程序存在一定的安全隱患,導(dǎo)致應(yīng)用程序存在結(jié)構(gòu)化查詢i吾言(SQL, Structured Query Language)注人風(fēng)險(xiǎn)。SQL是一種數(shù)據(jù)庫查詢和程序設(shè)計(jì)語言,用于存取數(shù)據(jù)以及查詢、更新和管理關(guān)系數(shù)據(jù)庫系統(tǒng);而SQL注入通過把SQL命令插入到Web表單中,或把SQL命令輸入域名中或把SQL命令插入到頁面請求的查詢字符串中,最終達(dá)到欺騙服務(wù)器來執(zhí)行惡意的SQL命令。攻擊者通過SQL注入,對應(yīng)用程序造成攻擊,從而獲得敏感信息,并且在一些情況下,還有可能導(dǎo)致服務(wù)器權(quán)限的丟失。因此,對于數(shù)據(jù)庫系統(tǒng)來說,防御SQL注入相當(dāng)重要,而網(wǎng)站管理人員對SQL注入的防御也極其重視。目前,常見的SQL注入防御技術(shù)主要包括以下三種1、關(guān)鍵字識(shí)別技術(shù)關(guān)鍵字識(shí)別技術(shù)主要是檢測用戶提交的SQL語句中的關(guān)鍵字,由于攻擊者在進(jìn)行SQL注入攻擊時(shí),往往會(huì)采用先探測應(yīng)用程序是否有漏洞,然后再攻擊的思路進(jìn)行,而在探測過程中,會(huì)采用一些加單引號(hào),或加“and 1 = 1”等類似的語句,這樣,服務(wù)器可以對用戶提交的SQL語句中包含的相關(guān)參數(shù)進(jìn)行檢測,看其中是否有上述的關(guān)鍵字,如果有,則報(bào)警并進(jìn)行攔截,同理,在攻擊階段,攻擊者會(huì)利用數(shù)據(jù)庫的特性來攻擊,并取得需要的信息,譬如常見的 union select, xp_cmdshell 等。2、正則識(shí)別技術(shù)正則識(shí)別技術(shù)是在關(guān)鍵字識(shí)別技術(shù)的基礎(chǔ)上發(fā)展而來的,由于在一些攻擊測試中,僅靠“and 1 = 1”等關(guān)鍵字,在防御SQL注入時(shí)存在一定的確定,例如,攻擊者使用“and2 = 2”來代替“and 1 = 1”,便能夠繞過關(guān)鍵字識(shí)別技術(shù)的檢測,由此,采用正則識(shí)別技術(shù)能夠莫不這種缺陷,使用“and * = * “來代替“andl = 1”即可,這樣,相對于關(guān)鍵字識(shí)別技術(shù)來說,減少了誤報(bào)和漏報(bào)。3、基于自學(xué)習(xí)的數(shù)據(jù)庫SQL注入防御技術(shù)在安全環(huán)境下學(xué)習(xí)合法的SQL語句,建立合法SQL語句知識(shí)庫,當(dāng)服務(wù)器檢測到用戶提交的SQL語句與知識(shí)庫中合法SQL語句不匹配時(shí),則判定存在SQL注入企圖。上述三種SQL注入防御技術(shù)統(tǒng)稱為基于特征的SQL注入檢測方法,但是由于SQL語句的多樣性,以及SQL注入的靈活性,上述第一種檢測方法中,誤報(bào)率很高,尤其是一些外文的網(wǎng)站,用戶提交大段的英文后,很容易匹配上預(yù)設(shè)的關(guān)鍵字,并且根據(jù)SQL語句的靈活性,有經(jīng)驗(yàn)的攻擊者很容易繞過服務(wù)器側(cè)預(yù)設(shè)的關(guān)鍵字進(jìn)行攻擊,降低了 SQL注入檢測的準(zhǔn)確性;而上述第二種檢測方法中,雖然相對于第一種檢測技術(shù)來說,降低了 SQL注入檢測誤報(bào)率和漏報(bào)率,攻擊者繞過的難度大一些,但是依然存在SQL注入檢測的準(zhǔn)確性較低的問題;而上述第三種檢測技術(shù)中,要求服務(wù)器學(xué)習(xí)所有合法的SQL語句,否則會(huì)把合法SQL語句誤認(rèn)為是非法SQL語句,同樣存在準(zhǔn)確性較低的問題。由此可見,攻擊者可以采用各種編碼方式,來繞過基于特征的SQL注入檢測方法,使得網(wǎng)站入侵防御系統(tǒng)(IPS,Intrusion Prevention System)和防火墻形同虛設(shè),導(dǎo)致基于特征的SQL注入檢測方法存在一定的誤報(bào)和漏報(bào),降低了 SQL注入檢測的準(zhǔn)確性。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供一種SQL注入檢測方法及裝置,用以減少SQL注入檢測過程中的漏報(bào)和誤報(bào),提高SQL注入檢測的準(zhǔn)確性。本發(fā)明實(shí)施例提供一種SQL注入檢測方法,包括接收用戶提交的結(jié)構(gòu)化查詢語言SQL語句;判斷所述SQL語句是否滿足預(yù)設(shè)的主動(dòng)防御檢測條件;在判斷結(jié)果為是時(shí),判定所述SQL語句為SQL注入;在判斷結(jié)果為否時(shí),繼續(xù)判斷所述SQL語句是否滿足預(yù)設(shè)的被動(dòng)防御檢測條件;如果滿足,判定所述SQL語句為合法SQL語句;如果不滿足,判定所述SQL語句為SQL注入。本發(fā)明實(shí)施例提供一種SQL注入檢測裝置,包括接收單元,用于接收用戶提交的結(jié)構(gòu)化查詢語言SQL語句;第一判斷單元,用于判斷所述SQL語句是否滿足預(yù)設(shè)的主動(dòng)防御檢測條件;第一判定單元,用于在所述第一判斷單元的判斷結(jié)果為是時(shí),判定所述SQL語句為SQL注入;第二判斷單元,用于在所述第一判斷單元的判斷結(jié)果為否時(shí),繼續(xù)判斷所述SQL語句是否滿足預(yù)設(shè)的被動(dòng)防御檢測條件;第二判定單元,用于在所述第二判斷單元的判斷結(jié)果為是時(shí),判定所述SQL語句為合法SQL語句;第三判定單元,用于在所述第二判斷單元的判斷結(jié)果為否時(shí),判定所述SQL語句為SQL注入。一種服務(wù)器,包括上述SQL注入檢測裝置。本發(fā)明實(shí)施例提供的SQL注入檢測方法及裝置,在進(jìn)行SQL注入檢測時(shí),首先根據(jù)預(yù)設(shè)的主動(dòng)防御檢測條件,判斷用戶輸入的SQL語句是否滿足該主動(dòng)防御檢測條件,如果滿足則可以直接判定用戶提交的SQL語句為SQL注入,否則,進(jìn)一步根據(jù)預(yù)設(shè)的被動(dòng)防御檢測條件,判斷用戶輸入的SQL語句是否滿足該被動(dòng)防御檢測條件,如果滿足則判定該SQL語句與合法SQL語句,如果不滿足,則判定用戶輸入的SQL語句為SQL注入。由此可見,本發(fā)明實(shí)施例中,通過設(shè)置兩道檢測屏障,增加了攻擊者的攻擊難度,同時(shí),用戶提交的SQL語句如果通過主動(dòng)防御檢測,在被動(dòng)防御檢測過程中,也能夠準(zhǔn)確識(shí)別SQL注入,從而減少了SQL注入檢測過程中的誤報(bào)和漏報(bào),提高了 SQL注入檢測的準(zhǔn)確性。本發(fā)明的其它特征和優(yōu)點(diǎn)將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實(shí)施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點(diǎn)可通過在所寫的說明書、權(quán)利要求書、以及附圖中所特別指出的結(jié)構(gòu)來實(shí)現(xiàn)和獲得。
圖1為本發(fā)明實(shí)施例中,對用戶提交的SQL語句進(jìn)行檢測的工作原理示意圖;圖2為本發(fā)明實(shí)施例中,被動(dòng)防御檢測流程的實(shí)施流程示意圖;圖3為本發(fā)明實(shí)施例中,主動(dòng)防御檢測流程的實(shí)施流程示意圖;圖4為本發(fā)明實(shí)施例中,SQL注入檢測方法的實(shí)施流程示意圖;圖5為本發(fā)明實(shí)施例中,SQL注入檢測裝置的結(jié)構(gòu)示意圖。
具體實(shí)施例方式為了減少SQL注入檢測過程中的誤報(bào)和漏報(bào),提高SQL注入檢測的準(zhǔn)確性,本發(fā)明實(shí)施例提供一種SQL注入檢測方法及裝置。以下結(jié)合說明書附圖對本發(fā)明的優(yōu)選實(shí)施例進(jìn)行說明,應(yīng)當(dāng)理解,此處所描述的優(yōu)選實(shí)施例僅用于說明和解釋本發(fā)明,并不用于限定本發(fā)明,并且在不沖突的情況下,本發(fā)明中的實(shí)施例及實(shí)施例中的特征可以相互組合。如圖1所示,為本發(fā)明實(shí)施例中,對用戶提交的SQL語句進(jìn)行檢測的工作原理示意圖,包括以下步驟SlOl、接收用戶提交的SQL語句;本發(fā)明實(shí)施例中涉及的SQL語句可以包括但不限于超文本傳輸協(xié)議(HTTP,HyperText Transfer Protocol)請求,查詢請求以及用戶身份驗(yàn)證數(shù)據(jù)。S102、按照預(yù)設(shè)標(biāo)準(zhǔn)對接收到的SQL語句進(jìn)行預(yù)處理;具體的,以SQL語句為HTTP請求為例,服務(wù)器對接收到的HTTP進(jìn)行解碼,并進(jìn)行統(tǒng)一資源定位符(URL,Uniform Resource Location)標(biāo)準(zhǔn)化處理,主要包括將接收到的SQL語句去掉注釋,多余的空格,以去除接收到的SQL語句中的一些畸形數(shù)據(jù)。通過對用戶輸入的SQL語句進(jìn)行預(yù)處理,能夠?qū)⒂脩籼峤坏腟QL語句標(biāo)準(zhǔn)化,這樣,能夠提高后續(xù)在進(jìn)行主動(dòng)防御檢測或者被動(dòng)防御檢測過程中,獲取該SQL語句中的SQL注入特征值或者指定參數(shù)時(shí)的準(zhǔn)確性,避免由于原始SQL語句中的畸形數(shù)據(jù)對檢測結(jié)果造成的影響。S103、對預(yù)處理之后的SQL語句進(jìn)行被動(dòng)防御檢測,確定該SQL語句是否滿足預(yù)設(shè)的被動(dòng)防御檢測條件;具體的,查找接收到的SQL語句中的SQL注入特征值,其中,SQL注入特征值可以根據(jù)日常經(jīng)驗(yàn)進(jìn)行總結(jié),從而能夠獲得一系列具有SQL注入特征的字符串,本發(fā)明實(shí)施例中將這些總結(jié)出來的字符串稱為SQL注入特征值。對于每一個(gè)SQL注入特征值,按照其攻擊危害程度分為多個(gè)等級(jí),針對不同的等級(jí)賦予不同的權(quán)值,為了便于理解,本發(fā)明實(shí)施例中以分為3個(gè)等級(jí)為例進(jìn)行說明。例如,將SQL語句中包含的單引號(hào)(‘)或者“and * = *”以及類似的字符串作為第一類SQL注入特征值,其對應(yīng)的權(quán)值為10 ;將SQL語句中包含的union select, order by以及類似的字符串作為第二類SQL注入特征值,其對應(yīng)的權(quán)值為20 ;將SQL語句中包含的xp_CmdShell以及類似的字符串作為第三類SQL注入特征值。從而針對從接收到的SQL語句中查找到的每一個(gè)SQL注入特征值,與上述每一類的SQL注入特征值一一進(jìn)行匹配,從而確定該SQL注入特征值對應(yīng)的權(quán)值,最后,將接收到的SQL語句中查找到的每一個(gè)SQL注入特征值對應(yīng)的權(quán)值相加得到權(quán)值之和,亦即,& = Sd+classOn). Valuen, η ^Lm= 1,2,3,其中,&表示提取出的η個(gè)SQL注入特征值對應(yīng)的權(quán)值之和,Slri表示前n-1個(gè)SQL注入特征值對應(yīng)的權(quán)值之和,classOii). Valium表示提取出的第η個(gè)SQL注入特征值對應(yīng)的權(quán)值,m表示提取出的第η個(gè)SQL注入特征值對應(yīng)的類別,假設(shè)第η個(gè)SQL注入特征值為第三類SQL注入特征值,則其對應(yīng)的權(quán)值為class (3). Valuen = 30,初始化時(shí),設(shè)置& = O。判斷&是否超過預(yù)設(shè)閾值,如果是,則確定接收到的SQL語句滿足預(yù)設(shè)的被動(dòng)防御檢測條件,如果否,確定接收到的SQL語句不滿足預(yù)設(shè)的被動(dòng)防御檢測條件,若接收到的SQL語句不滿足預(yù)設(shè)的被動(dòng)防御檢測條件時(shí),還需要對該SQL語句進(jìn)行主動(dòng)防御檢測,以確定該SQL語句是否滿足主動(dòng)防御檢測條件。需要說明的是,本發(fā)明實(shí)施例提供的根據(jù)SQL語句中包含的SQL注入特征值對應(yīng)的權(quán)值之和是否預(yù)設(shè)閾值判斷SQL語句是否滿足被動(dòng)防御檢測條件,只是本發(fā)明實(shí)施例的一種較佳地實(shí)施方法,具體實(shí)施中,還可以根據(jù)其它方法來確定SQL語句是否滿足被動(dòng)檢測條件,這里不做限定。較佳地,具體實(shí)施時(shí),網(wǎng)站管理員可以對預(yù)設(shè)閾值進(jìn)行手動(dòng)調(diào)整,通過對該預(yù)設(shè)閾值的調(diào)整,來控制SQL注入檢測的粒度,以確保將SQL注入檢測控制在能夠容忍的漏報(bào)和誤報(bào)范圍內(nèi)。本發(fā)明實(shí)施例中,若SQL語句通過被動(dòng)防御檢測之后,即該SQL滿足預(yù)設(shè)的被動(dòng)防御檢測條件時(shí),需要對該SQL語句繼續(xù)進(jìn)行主動(dòng)防御檢測。S104、繼續(xù)對預(yù)處理之后的SQL語句進(jìn)行主動(dòng)防御檢測,確定該SQL語句是否滿足預(yù)設(shè)的主動(dòng)防御檢測條件;具體的,獲得預(yù)處理之后的SQL語句中包含的指定參數(shù),并確定該指定參數(shù)對應(yīng)的參數(shù)類型,指定參數(shù)為SQL語句中一些常見的參數(shù),例如,用戶提交的URL中包含的id和classid等,如果與預(yù)先存儲(chǔ)的該指定參數(shù)對應(yīng)的參數(shù)類型匹配,則說明該SQL語句滿足預(yù)設(shè)的主動(dòng)防御檢測條件,否則,說明該SQL語句不滿足預(yù)設(shè)的主動(dòng)防御檢測條件。較佳地,本發(fā)明實(shí)施例中,可以通過以下方法確定指定參數(shù)對應(yīng)的參數(shù)類型,為了便于描述,以指定參數(shù)為id為例進(jìn)行說明學(xué)習(xí)預(yù)設(shè)數(shù)量的SQL語句中id的參數(shù)類型,來確定其對應(yīng)的參數(shù)類型,其中,用于學(xué)習(xí)的SQL語句稱為樣本數(shù)據(jù)。具體來說,提取樣本數(shù)據(jù)中的URL、FORM表單或者COOKIE等中包含的id進(jìn)行分析統(tǒng)計(jì),并根據(jù)統(tǒng)計(jì)結(jié)果確定id對應(yīng)的參數(shù)類型。具體實(shí)施時(shí),需要預(yù)先根據(jù)指定參數(shù)的值對不同的參數(shù)進(jìn)行分類,例如,若該指定參數(shù)的值只包含數(shù)字時(shí),確定該參數(shù)對應(yīng)的參數(shù)類型為A,若該參數(shù)的值包含有數(shù)字、字母和除引號(hào)、尖括號(hào)之外的符號(hào)時(shí),確定該參數(shù)對應(yīng)的參數(shù)類型為B,若該參數(shù)的值包含有數(shù)字、字母、引號(hào)以及叫括號(hào)和其它內(nèi)容時(shí),確定該參數(shù)對應(yīng)的參數(shù)類型為C。并針對每一參數(shù)類型,統(tǒng)計(jì)樣本數(shù)據(jù)中該參數(shù)類型的數(shù)量,并選擇數(shù)量最多的參數(shù)類型確定為該參數(shù)的參數(shù)類型。需要說明的是,上述參數(shù)類型的分類方法,只用于說明本發(fā)明實(shí)施例,而不用于對本發(fā)明實(shí)施例的限定,具體實(shí)施時(shí),可以根據(jù)實(shí)際情況選擇參數(shù)類型的分類方法。由此可見,本發(fā)明實(shí)施例中,即使攻擊者利用已有經(jīng)驗(yàn),通過改變SQL注入特征值來繞過被動(dòng)防御檢測,即攻擊者使用包含未知SQL注入特征值的SQL語句進(jìn)行攻擊時(shí),在主動(dòng)防御檢測中,能夠通過提取用戶輸入的SQL語句中的指定參數(shù),并對該指定參數(shù)的參數(shù)類型進(jìn)行匹配,當(dāng)發(fā)現(xiàn)用戶輸入的SQL語句中的指定參數(shù)對應(yīng)的參數(shù)類型與該指定參數(shù)實(shí)際對應(yīng)的參數(shù)類型不匹配時(shí),依然能夠識(shí)別該用戶輸入的SQL語句為SQL注入,并觸發(fā)報(bào)警操作,攔截該SQL語句,從而實(shí)現(xiàn)對未知SQL注入攻擊的檢測。為了便于理解本發(fā)明實(shí)施例,以下以用戶訪問主機(jī)地址為誦.XXX. com為例,假設(shè)用戶提交的URL為/bbs/newa. asp,假設(shè)樣本數(shù)據(jù)為100個(gè),即對用戶提交的100個(gè)SQL語句進(jìn)行分析統(tǒng)計(jì),最后的統(tǒng)計(jì)結(jié)果如下(以分別確定參數(shù)id和Classid對應(yīng)的參數(shù)類型
為例)
id {A90B4C6
Classid {A 99B 1C 0
}根據(jù)上述統(tǒng)計(jì)結(jié)果可知,對于參數(shù)id來說,100個(gè)樣本數(shù)據(jù)中有90個(gè)SQL語句能夠確定參數(shù)id的參數(shù)類型為A,有4個(gè)SQL語句能夠確定參數(shù)id的參數(shù)類型為B,有6個(gè)SQL語句能夠確定參數(shù)id的參數(shù)類型為C,可見,數(shù)量最多的參數(shù)類型為A,因此,確定參數(shù)id對應(yīng)的參數(shù)類型為A。同理,可以確定出參數(shù)Classid對應(yīng)的參數(shù)類型也為A,確定出指定參數(shù)對應(yīng)的參數(shù)類型之后,將統(tǒng)計(jì)結(jié)果進(jìn)行存儲(chǔ)。較佳地,網(wǎng)站管理員可以根據(jù)管理需要,對一些參數(shù)的參數(shù)類型進(jìn)行配置。在進(jìn)行SQL注入檢測時(shí),可以利用上述統(tǒng)計(jì)結(jié)果進(jìn)行主動(dòng)防御檢測。例如,當(dāng)用戶提交的SQL語句中包含mm. XXX. com/bbs/news. asp ? id=2&classid = 4,由于id和calssid對應(yīng)的值只包含數(shù)字,因此,可以確定id和classid對應(yīng)的參數(shù)類型均為A,因此,確定該SQL語句滿足預(yù)設(shè)的主動(dòng)防御檢測條件。而如果用戶提交的 SQL 語句中包含 www. XXX. com/bbs/news. asp ? id = 2&classid = 4,a,由于classid的值包含的內(nèi)容中存在引號(hào),因此確定classid對應(yīng)的參數(shù)類型為C,而預(yù)先存儲(chǔ)的classid對應(yīng)的參數(shù)類型為A,可見,二者不匹配,從而判定該SQL語句不滿足預(yù)設(shè)的主動(dòng)防御檢測條件。需要說明的是,本發(fā)明實(shí)施例提供的根據(jù)SQL語句中包含的指定參數(shù)對應(yīng)的參數(shù)類型與預(yù)先存儲(chǔ)的該指定參數(shù)對應(yīng)的參數(shù)類型是否匹配來確定該SQL語句是否滿足主動(dòng)防御檢測條件,只是本發(fā)明實(shí)施例的一種較佳地實(shí)施方法,具體實(shí)施中,還可以根據(jù)其它方法來確定SQL語句是否滿足主動(dòng)檢測條件,這里不做限定。較佳地,本發(fā)明實(shí)施例中在判定出用戶提交的SQL語句為SQL注入之后,可以觸發(fā)
9報(bào)警操作,并攔截該SQL語句。這樣,有效避免了攻擊者通過SQL注入獲得服務(wù)器中的敏感數(shù)據(jù),對應(yīng)用程序造成攻擊,增強(qiáng)了服務(wù)器應(yīng)用程序的安全性。如果用戶提交的SQL語句通過被動(dòng)防御檢測和主動(dòng)防御檢測,將由服務(wù)器執(zhí)行該SQL語句,由于在一些SQL注入攻擊中,一些攻擊者往往會(huì)通過服務(wù)器返回的錯(cuò)誤信息來判斷攻擊是否有效,更佳地,本發(fā)明實(shí)施例中,為了避免上述情況的出現(xiàn),預(yù)先存儲(chǔ)發(fā)生SQL注入攻擊時(shí),服務(wù)器返回的錯(cuò)誤信息列表,當(dāng)服務(wù)器向用戶返回錯(cuò)誤信息時(shí),首先判斷該錯(cuò)誤信息是否在預(yù)先存儲(chǔ)的錯(cuò)誤信息列表中,如果是,則將該錯(cuò)誤信息過濾,不返回給用戶。這樣,使得攻擊者在進(jìn)行SQL注入攻擊時(shí),如果攻擊者輸入的SQL語句在被動(dòng)防御檢測或者主動(dòng)防御檢測過程中被攔截而導(dǎo)致攻擊失敗時(shí),無法獲知攻擊結(jié)果,避免了攻擊者從返回結(jié)果中獲取其他可利用的攻擊信息。基于此,本發(fā)明實(shí)施例提供的SQL注入檢測方法,還可以包括以下步驟S105、判斷服務(wù)器返回的錯(cuò)誤信息是否在預(yù)先存儲(chǔ)的錯(cuò)誤信息列表中,如果是,執(zhí)行步驟S106,否則,執(zhí)行步驟S107 ;S106、過濾該錯(cuò)誤信息;S107、將錯(cuò)誤信息返回給用戶。為了更好地理解本發(fā)明實(shí)施例,以下分別對被動(dòng)防御檢測和主動(dòng)防御檢測的實(shí)施流程進(jìn)行說明。如圖2所示,為本發(fā)明實(shí)施例提供的被動(dòng)防御檢測流程的實(shí)施流程示意圖,為了便于理解,本發(fā)明實(shí)施例中仍然以將SQL注入特征值劃分為3個(gè)等級(jí)為例,包括以下步驟S201、初始化預(yù)處理之后的SQL語句中包含的SQL注入特征值的權(quán)值之和;具體實(shí)施中,在對預(yù)處理之后的SQL語句包含的SQL注入特征值的權(quán)值之和進(jìn)行初始化時(shí),可以設(shè)置& = 0,n表示預(yù)處理之后的SQL語句中包含的第η個(gè)SQL注入特征值。S202、判斷該SQL語句中是否包含第一類SQL注入特征值,如果是,執(zhí)行步驟S203,否則執(zhí)行步驟S204 ;S203、更新 & 的值;其中,更新后的&為 = Sn-Jclass(I). Valium;具體實(shí)施時(shí),從預(yù)處理后的SQL語句包含的第一個(gè)字符開始,依次掃描該SQL語句,當(dāng)查找到第一類SQL注入特征值時(shí),此時(shí),η = 1,假設(shè)第一類SQL注入特征值對應(yīng)的權(quán)值為10,即Class(I)-Value1 = IOjjS1 =S0+class (1). Value1 = 0+10 = 10。S204、判斷該SQL語句中是否包含第二類SQL注入特征值,如果是,執(zhí)行步驟S205,否則執(zhí)行步驟S206 ;S205、更新 & 的值;經(jīng)過步驟S202 步驟S203之后,假設(shè)存在第一類SQL注入特征值,顯然,S1 = 10,在步驟S204中,從預(yù)處理后的SQL語句包含的第一個(gè)字符開始,重新依次掃描該SQL語句,當(dāng)查找到第二類SQL注入特征值時(shí),此時(shí),η = 2,假設(shè)第二類SQL注入特征值對應(yīng)的權(quán)值為20,即 class (1) · Value3 = 20,則 & = Sjclass (2) · Value3 = 10+20 = 30。S206、判斷該SQL語句中是否包含第三類SQL注入特征值,如果是,執(zhí)行步驟S207,否則執(zhí)行步驟S208 ;S207、更新 & 的值;
若經(jīng)過步驟S202 步驟S205之后,假設(shè)存在第一類SQL注入特征值和第二類SQL注入特征值,顯然,此時(shí)& = 30,在步驟S206中,從預(yù)處理后的SQL語句包含的第一個(gè)字符開始,重新依次掃描該SQL語句,若查找到第三類SQL注入特征值時(shí),此時(shí),η = 3,假設(shè)第三類SQL注入特征值對應(yīng)的權(quán)值為30,即class (3) · Value3 = 30,則S3 = S2+class (3) ·Value3 = 30+30 = 60 ;若經(jīng)過步驟S202 步驟S205之后,不存在第一類和第二類SQL注入特征值,此時(shí),η = 1,則 S1 = S0+class (3). Value1 = 0+30 = 30 ;若第一類和第二類 SQL注入特征值只存在其中的一個(gè),假設(shè)存在第二類SQL注入特征值,則S1 = 20,由于查找到第三類 SQL 注入特征值,此時(shí),η = 2,則 S2 = S^class (3). Value1 = 20+30 = 50。經(jīng)過步驟S202 步驟S207之后,能夠得到該SQL語句中包含的所有的SQL注入特征值對應(yīng)的權(quán)值之和&。S208、判斷&是否超過預(yù)設(shè)閾值,如果是,執(zhí)行步驟S209,否則,執(zhí)行步驟S210 ;S209、判定該SQL語句為SQL注入;S210、對SQL語句進(jìn)行主動(dòng)防御檢測。如圖3所示,為本發(fā)明實(shí)施例中主動(dòng)防御檢測的實(shí)施流程示意圖,包括以下步驟S301、獲得預(yù)處理之后的SQL語句中的指定參數(shù);例如,以參數(shù)a = 123,參數(shù)b = 456’為例;根據(jù)步驟S104中參數(shù)類型的確定方法可知,參數(shù)a對應(yīng)的參數(shù)類型為A,參數(shù)b對應(yīng)的參數(shù)類型為C。S302、確定指定參數(shù)對應(yīng)的參數(shù)類型;具體的,根據(jù)步驟S104中參數(shù)類型的確定方法可知,參數(shù)a對應(yīng)的參數(shù)類型為A,參數(shù)b對應(yīng)的參數(shù)類型為C。S303、分別判斷確定出的參數(shù)a和參數(shù)b的參數(shù)類型與預(yù)先存儲(chǔ)的參數(shù)a和參數(shù)b的參數(shù)類型是否匹配,如果匹配,執(zhí)行步驟S304,如果不匹配,執(zhí)行步驟S305 ;S304、判定該SQL語句為合法SQL語句;S305、判定該SQL語句為SQL注入。基于上述分析,如圖4所示,本發(fā)明實(shí)施例提供的SQL注入檢測方法的實(shí)施流程示意圖,可以包括以下步驟S401、接收用戶提交的SQL語句;S402、判斷該SQL語句是否滿足預(yù)設(shè)的主動(dòng)防御檢測條件,如果是,執(zhí)行步驟S403,否則,執(zhí)行步驟S404 ;具體的,可以按照以下步驟判斷該SQL語句是否滿足預(yù)設(shè)的主動(dòng)防御檢測條件步驟一、從該SQL語句中依次查找每一個(gè)SQL注入特征值;步驟二、根據(jù)查找到的每一個(gè)SQL注入特征值對應(yīng)的權(quán)值,確定該SQL語句中包含的各SQL注入特征值對應(yīng)的權(quán)值之和;步驟三、判斷各SQL注入特征值對應(yīng)的權(quán)值之和是否超過預(yù)設(shè)閾值,若果是,執(zhí)行步驟四,如果否,執(zhí)行步驟五;步驟四、確定該SQL語句滿足預(yù)設(shè)的被動(dòng)防御檢測條件;步驟五、確定該SQL語句不滿足預(yù)設(shè)的被動(dòng)防御檢測條件。S403、判定該SQL語句為SQL注入;S404、繼續(xù)判斷該SQL語句是否滿足預(yù)設(shè)的主動(dòng)防御檢測條件,如果是,執(zhí)行步驟S405,否則,執(zhí)行步驟S406 ;具體的,可以按照以下步驟判斷該SQL語句是否滿足預(yù)設(shè)的被動(dòng)防御檢測條件步驟一、獲得該SQL語句中的指定參數(shù);步驟二、針對獲得的每一個(gè)指定參數(shù),確定該指定參數(shù)對應(yīng)的第一參數(shù)類型;步驟三、若該第一參數(shù)類型與預(yù)先存儲(chǔ)的、該指定參數(shù)對應(yīng)的第二參數(shù)類型匹配時(shí),確定該SQL語句滿足預(yù)設(shè)的被動(dòng)防御檢測條件,否則,確定該SQL語句不滿足預(yù)設(shè)的被動(dòng)防御檢測條件。S405、判定該SQL語句為合法SQL語句;S406、判定該SQL語句為SQL注入。基于同一發(fā)明構(gòu)思,本發(fā)明實(shí)施例中還提供了一種SQL注入檢測裝置,由于該裝置解決問題的原理與SQL注入檢測方法相似,因此該裝置的實(shí)施可以參見方法的實(shí)施,重復(fù)之處不再贅述。如圖5所示,為本發(fā)明實(shí)施例提供的SQL注入檢測裝置的結(jié)構(gòu)示意圖,包括接收單元501,用于接收用戶提交的SQL語句;第一判斷單元502,用于判斷接收單元501接收到的SQL語句是否滿足預(yù)設(shè)的被動(dòng)防御檢測條件;第一判定單元503,用于在第一判斷單元502的判斷結(jié)果為是時(shí),判定該SQL語句為SQL注入;第二判斷單元504,用于在第一判斷單元502的判斷結(jié)果為否時(shí),繼續(xù)判斷該SQL語句是否滿足預(yù)設(shè)的主動(dòng)防御檢測條件;第二判定單元505,用于在第二判斷單元504的判斷結(jié)果為是時(shí),判定該SQL語句為合法SQL語句;第三判定單元506,用于在第二判斷單元504的判斷結(jié)果為否時(shí),判定該SQL語句為SQL注入。具體實(shí)施中,第一判斷單元,可以包括查找子單元,用于從接收到的SQL語句中依次查找每一個(gè)SQL注入特征值;第一確定子單元,用于根據(jù)查找到的每一個(gè)SQL注入特征值對應(yīng)的權(quán)值,確定該SQL語句中包含的各SQL注入特征值對應(yīng)的權(quán)值之和;第一判斷子單元,用于判斷各SQL注入特征值對應(yīng)的權(quán)值之和是否超過預(yù)設(shè)閾值;第二確定子單元,用于在第一判斷子單元的判斷結(jié)果為是時(shí),確定該SQL語句滿足預(yù)設(shè)的被動(dòng)防御檢測條件;第三確定子單元,用于在第一第一判斷子單元的判斷結(jié)果為否時(shí),確定該SQL語句不滿足預(yù)設(shè)的被動(dòng)防御檢測條件。具體實(shí)施中,第二判斷單元,可以包括獲得子單元,用于獲得該SQL語句中指定參數(shù);第四確定子單元,用于針對獲得的每一個(gè)指定參數(shù),確定該指定參數(shù)對應(yīng)的第一參數(shù)類型;第五確定子單元,用于在第一參數(shù)類型與預(yù)先存儲(chǔ)的、該指定參數(shù)對應(yīng)的第二參數(shù)類型匹配時(shí),確定該SQL語句滿足預(yù)設(shè)的主動(dòng)防御檢測條件;第六確定子單元,用于在第一參數(shù)類型與預(yù)先存儲(chǔ)的、該指定參數(shù)對應(yīng)的第二參數(shù)類型不匹配時(shí),確定該SQL語句不滿足預(yù)設(shè)的主動(dòng)防御檢測條件。具體實(shí)施中,SQL注入檢測裝置,還可以包括獲得單元,用于獲得執(zhí)行該SQL語句后的返回信息;過濾單元,用于確定該返回信息存在于預(yù)先存儲(chǔ)的返回信息列表中時(shí),過濾該返回信息。具體實(shí)施中,SQL注入檢測裝置,還可以包括觸發(fā)單元,用于在判定該SQL語句為SQL注入之后,觸發(fā)報(bào)警操作;攔截單元,用于在判定該SQL語句為SQL注入之后,攔截該SQL語句。具體實(shí)施中,SQL注入檢測裝置,還可以包括預(yù)處理單元,用于在提取用戶提交的SQL語句中包含的至少一個(gè)SQL注入特征值之前,按照預(yù)設(shè)標(biāo)準(zhǔn)對該SQL語句進(jìn)行預(yù)處理。具體實(shí)施中,SQL注入檢測裝置,還可以包括提取單元,用于提取指定數(shù)量個(gè)用戶提交的SQL語句中包含的該指定參數(shù);第二確定單元,用于針對提取出的每一個(gè)所述指定參數(shù),確定該指定參數(shù)對應(yīng)的參數(shù)類型;統(tǒng)計(jì)單元,用于針對每一參數(shù)類型,分別統(tǒng)計(jì)該參數(shù)類型對應(yīng)的數(shù)量;第三確定單元,用于將數(shù)量最多的參數(shù)類型確定為該指定參數(shù)對應(yīng)的第二參數(shù)類型。具體實(shí)施中,SQL注入檢測裝置,還可以包括第四確定單元,用于針對任一 SQL注入特征值,確定該SQL注入特征值對應(yīng)的特征值類別;第五確定單元,用于確定該特征值類別對應(yīng)的權(quán)值為該SQL注入特征值對應(yīng)的權(quán)值。具體實(shí)施時(shí),SQL注入檢測裝置可以設(shè)置在服務(wù)器中,需要說明的是,將SQL注入檢測裝置設(shè)置在服務(wù)器中僅是本發(fā)明實(shí)施例的一種較佳的實(shí)施方式,具體實(shí)施時(shí),SQL注入檢測裝置也可以獨(dú)立設(shè)置。本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器、CD-ROM、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。盡管已描述了本發(fā)明的優(yōu)選實(shí)施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對這些實(shí)施例做出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實(shí)施例以及落入本發(fā)明范圍的所有變更和修改。本發(fā)明實(shí)施例提供的SQL注入檢測方法及裝置,在進(jìn)行SQL注入檢測時(shí),首先根據(jù)預(yù)設(shè)的主動(dòng)防御檢測條件,判斷用戶輸入的SQL語句是否滿足該主動(dòng)防御檢測條件,如果滿足則可以直接判定用戶提交的SQL語句為SQL注入,否則,進(jìn)一步根據(jù)預(yù)設(shè)的被動(dòng)防御檢測條件,判斷用戶輸入的SQL語句是否滿足該被動(dòng)防御檢測條件,如果滿足則判定該SQL語句與合法SQL語句,如果不滿足,則判定用戶輸入的SQL語句為SQL注入。由此可見,本發(fā)明實(shí)施例中,通過設(shè)置兩道檢測屏障,增加了攻擊者的攻擊難度,同時(shí),用戶提交的SQL語句如果通過主動(dòng)防御檢測,在被動(dòng)防御檢測過程中,也能夠準(zhǔn)確識(shí)別SQL注入,從而減少了SQL注入檢測過程中的誤報(bào)和漏報(bào),提高了 SQL注入檢測的準(zhǔn)確性。顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。
權(quán)利要求
1.一種SQL注入檢測方法,其特征在于,包括接收用戶提交的結(jié)構(gòu)化查詢語言SQL語句;判斷所述SQL語句是否滿足預(yù)設(shè)的被動(dòng)防御檢測條件;在判斷結(jié)果為是時(shí),判定所述SQL語句為SQL注入;在判斷結(jié)果為否時(shí),繼續(xù)判斷所述SQL語句是否滿足預(yù)設(shè)的主動(dòng)防御檢測條件;如果滿足,判定所述SQL語句為合法SQL語句;如果不滿足,判定所述SQL語句為SQL注入。
2.如權(quán)利要求1所述的方法,其特征在于,判斷所述SQL語句是否滿足預(yù)設(shè)的被動(dòng)防御檢測條件,具體包括從所述SQL語句中依次查找每一個(gè)SQL注入特征值;并根據(jù)查找到的每一個(gè)SQL注入特征值對應(yīng)的權(quán)值,確定所述SQL語句中包含的各SQL注入特征值對應(yīng)的權(quán)值之和;判斷各SQL注入特征值對應(yīng)的權(quán)值之和是否超過預(yù)設(shè)閾值;如果是,確定所述SQL語句滿足預(yù)設(shè)的被動(dòng)防御檢測條件;如果否,確定所述SQL語句不滿足預(yù)設(shè)的被動(dòng)防御檢測條件。
3.如權(quán)利要求1所述的方法,其特征在于,判斷所述SQL語句是否滿足預(yù)設(shè)的主動(dòng)防御檢測條件,具體包括獲得所述SQL語句中的指定參數(shù);并針對獲得的每一個(gè)指定參數(shù),確定該指定參數(shù)對應(yīng)的第一參數(shù)類型,若所述第一參數(shù)類型與預(yù)先存儲(chǔ)的、該指定參數(shù)對應(yīng)的第二參數(shù)類型匹配時(shí),確定所述SQL語句滿足預(yù)設(shè)的被動(dòng)防御檢測條件,否則,確定所述SQL語句不滿足預(yù)設(shè)的被動(dòng)防御檢測條件。
4.如權(quán)利要求1所述的方法,其特征在于,還包括獲得執(zhí)行所述SQL語句后的返回信息;以及確定所述返回信息存在于預(yù)先存儲(chǔ)的返回信息列表中時(shí),過濾所述返回信息。
5.如權(quán)利要求1所述的方法,其特征在于,判定所述SQL語句為SQL注入之后,還包括;并觸發(fā)報(bào)警操作;并攔截所述SQL語句。
6.如權(quán)利要求1所述的方法,其特征在于,提取用戶提交的SQL語句中包含的至少一個(gè)SQL注入特征值之前,還包括按照預(yù)設(shè)標(biāo)準(zhǔn)對所述SQL語句進(jìn)行預(yù)處理。
7.如權(quán)利要求1所述的方法,其特征在于,按照如下過程確定所述指定參數(shù)對應(yīng)的第二參數(shù)類型提取指定數(shù)量的、用戶提交的SQL語句中包含的所述指定參數(shù);并針對每一個(gè)用戶提交的SQL語句中包含的所述指定參數(shù),確定該指定參數(shù)對應(yīng)的參數(shù)類型;針對每一參數(shù)類型,分別統(tǒng)計(jì)該參數(shù)類型對應(yīng)的數(shù)量;以及將數(shù)量最多的參數(shù)類型確定為所述指定參數(shù)對應(yīng)的第二參數(shù)類型。
8.如權(quán)利要求1所述的方法,其特征在于,按照以下過程確定任一SQL注入特征值對應(yīng)的權(quán)值針對任一 SQL注入特征值,確定該SQL注入特征值對應(yīng)的特征值類別;確定所述特征值類別對應(yīng)的權(quán)值為該SQL注入特征值對應(yīng)的權(quán)值。
9.一種SQL注入檢測裝置,其特征在于,包括接收單元,用于接收用戶提交的結(jié)構(gòu)化查詢語言SQL語句;第一判斷單元,用于判斷所述SQL語句是否滿足預(yù)設(shè)的被動(dòng)防御檢測條件;第一判定單元,用于在所述第一判斷單元的判斷結(jié)果為是時(shí),判定所述SQL語句為SQL注入;第二判斷單元,用于在所述第一判斷單元的判斷結(jié)果為否時(shí),繼續(xù)判斷所述SQL語句是否滿足預(yù)設(shè)的主動(dòng)防御檢測條件;第二判定單元,用于在所述第二判斷單元的判斷結(jié)果為是時(shí),判定所述SQL語句為合法SQL語句;第三判定單元,用于在所述第二判斷單元的判斷結(jié)果為否時(shí),判定所述SQL語句為SQL注入。
10.如權(quán)利要求9所述的裝置,其特征在于,所述第一判斷單元,包括查找子單元,用于從所述SQL語句中依次查找每一個(gè)SQL注入特征值;第一確定子單元,用于根據(jù)查找到的每一個(gè)SQL注入特征值對應(yīng)的權(quán)值,確定所述SQL語句中包含的各SQL注入特征值對應(yīng)的權(quán)值之和;第一判斷子單元,用于判斷各SQL注入特征值對應(yīng)的權(quán)值之和是否超過預(yù)設(shè)閾值;第二確定子單元,用于在所述第一判斷子單元的判斷結(jié)果為是時(shí),確定所述SQL語句滿足預(yù)設(shè)的被動(dòng)防御檢測條件;第三確定子單元,用于在所述第一判斷子單元的判斷結(jié)果為否時(shí),確定所述SQL語句不滿足預(yù)設(shè)的被動(dòng)防御檢測條件。
11.如權(quán)利要求9所述的裝置,其特征在于,所述第二判斷單元,包括獲得子單元,用于獲得所述SQL語句中的指定參數(shù);第四確定子單元,用于針對獲得的每一個(gè)指定參數(shù),確定該指定參數(shù)對應(yīng)的第一參數(shù)類型;第五確定子單元,用于在所述第一參數(shù)類型與預(yù)先存儲(chǔ)的、該指定參數(shù)對應(yīng)的第二參數(shù)類型匹配時(shí),確定所述SQL語句滿足預(yù)設(shè)的主動(dòng)防御檢測條件;第六確定子單元,用于在所述第一參數(shù)類型與預(yù)先存儲(chǔ)的、該指定參數(shù)對應(yīng)的第二參數(shù)類型不匹配時(shí),確定所述SQL語句不滿足預(yù)設(shè)的主動(dòng)防御檢測條件。
12.如權(quán)利要求9所述的裝置,其特征在于,還包括獲得單元,用于獲得執(zhí)行所述SQL語句后的返回信息;過濾單元,用于確定所述返回信息存在于預(yù)先存儲(chǔ)的返回信息列表中時(shí),過濾所述返回信息。
13.如權(quán)利要求9所述的裝置,其特征在于,還包括觸發(fā)單元,用于在判定所述SQL語句為SQL注入之后,觸發(fā)報(bào)警操作;攔截單元,用于在判定所述SQL語句為SQL注入之后,攔截所述SQL語句。
14.如權(quán)利要求9所述的裝置,其特征在于,還包括預(yù)處理單元,用于在提取用戶提交的SQL語句中包含的至少一個(gè)SQL注入特征值之前,按照預(yù)設(shè)標(biāo)準(zhǔn)對所述SQL語句進(jìn)行預(yù)處理。
15.如權(quán)利要求9所述的裝置,其特征在于,還包括提取單元,用于提取指定數(shù)量個(gè)用戶提交的SQL語句中包含的所述指定參數(shù);第二確定單元,用于針對提取出的每一個(gè)所述指定參數(shù),確定該指定參數(shù)對應(yīng)的參數(shù)類型;統(tǒng)計(jì)單元,用于針對每一參數(shù)類型,分別統(tǒng)計(jì)該參數(shù)類型對應(yīng)的數(shù)量;第三確定單元,用于將數(shù)量最多的參數(shù)類型確定為所述指定參數(shù)對應(yīng)的第二參數(shù)類型。
16.如權(quán)利要求9所述的裝置,其特征在于,還包括第四確定單元,用于針對任一 SQL注入特征值,確定該SQL注入特征值對應(yīng)的特征值類別;第五確定單元,用于確定所述特征值類別對應(yīng)的權(quán)值為該SQL注入特征值對應(yīng)的權(quán)值。
17.一種服務(wù)器,其特征在于,包括權(quán)利要求9 16任一權(quán)利要求所述的裝置。
全文摘要
本發(fā)明公開了一種SQL注入檢測方法及裝置,用以減少SQL注入檢測過程中的漏報(bào)和誤報(bào),提高SQL注入檢測的準(zhǔn)確性。其中,SQL注入檢測方法包括接收用戶提交的結(jié)構(gòu)化查詢語言SQL語句;判斷所述SQL語句是否滿足預(yù)設(shè)的被動(dòng)防御檢測條件;在判斷結(jié)果為是時(shí),判定所述SQL語句為SQL注入;在判斷結(jié)果為否時(shí),繼續(xù)判斷所述SQL語句是否滿足預(yù)設(shè)的主動(dòng)防御檢測條件;如果滿足,判定所述SQL語句為合法SQL語句;如果不滿足,判定所述SQL語句為SQL注入。
文檔編號(hào)G06F17/30GK102567546SQ20121001644
公開日2012年7月11日 申請日期2012年1月18日 優(yōu)先權(quán)日2012年1月18日
發(fā)明者段宇璇, 程利軍, 韓鵬 申請人:北京神州綠盟信息安全科技股份有限公司