亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種SQL命令注入的檢測方法及系統(tǒng)與流程

文檔序號:11276734閱讀:335來源:國知局
一種SQL命令注入的檢測方法及系統(tǒng)與流程

本申請涉及數(shù)據(jù)檢測技術(shù)領(lǐng)域,特別涉及一種sql命令注入的檢測方法及系統(tǒng)。



背景技術(shù):

在當今互聯(lián)網(wǎng)時代,越來越多的企業(yè)將業(yè)務(wù)遷移到互聯(lián)網(wǎng)上,而眾多的企業(yè)業(yè)務(wù)應(yīng)用主要是以web方式交互實現(xiàn)的,而通過web方式進行交互的數(shù)據(jù)也通過這種方式進入業(yè)務(wù)系統(tǒng),最終被保存在企業(yè)的后臺數(shù)據(jù)庫中,對于以開發(fā)web應(yīng)用軟件為主的企業(yè),后臺數(shù)據(jù)庫中數(shù)據(jù)的重要性不言而喻。

而通過web實現(xiàn)交互固然有其好的一面,但同時也存在潛在的風險。其中,一些惡意攻擊者意圖躲避后臺程序開發(fā)人員的注意,在通過web方式提交的表單、輸入域名以及頁面請求的命令中插入sql(structuredquerylanguage,中文名為:結(jié)構(gòu)化查詢語言)命令的字符串,利用web應(yīng)用程序的漏洞將惡意的sql命令注入正常的訪問命令,來欺騙服務(wù)器執(zhí)行惡意的sql命令,達到攻擊數(shù)據(jù)庫服務(wù)器或竊取數(shù)據(jù)的目的,為企業(yè)后臺數(shù)據(jù)庫中數(shù)據(jù)的安全造成了嚴重的威脅。

在現(xiàn)有技術(shù)中,主要通過“打疫苗”的方式來防范sql命令注入,換句話說,就是根據(jù)sql命令注入攻擊特點形成特征庫,利用該特征庫來對所有外部命令進行是否攜帶有表現(xiàn)為同樣特征庫的sql命令檢測,這種方法一方面過于依賴特征庫的更新,一旦更新不及時就無法防范攻擊;另一方面,只要對原sql命令做出些許變化、變異,形成的特征庫就跟原來的不同,即,面對變異出來的新sql命令難以做到防范,且同時存在誤傷的情況,對正常命令進行了攔截。綜上,通過現(xiàn)有的方法無法對sql命令注入做出有效的防范。

那么,如何在無法避免外部命令中含有sql命令注入的情況下,提供一種更有效、準確率更高的,且無須頻繁更新的sql命令注入的檢測機制,是本領(lǐng)域技術(shù)人員亟待解決的問題。



技術(shù)實現(xiàn)要素:

本申請的目的是提供一種sql命令注入的檢測方法及系統(tǒng),在無法避免外部命令中含有sql命令注入的情況下,以一種更有效、準確率更高的,且無須頻繁更新的檢測方法,能夠檢測到外部命令中被注入的sql命令,保障企業(yè)后臺數(shù)據(jù)庫中數(shù)據(jù)的安全。

為解決上述技術(shù)問題,本申請?zhí)峁┮环Nsql命令注入的檢測方法,該方法包括:

采集提交給業(yè)務(wù)端的請求數(shù)據(jù);

采集所述業(yè)務(wù)端到數(shù)據(jù)庫端的數(shù)據(jù)庫協(xié)議流量,并從所述數(shù)據(jù)庫協(xié)議流量中提取注入sql命令段;

判斷是否能在所述請求數(shù)據(jù)中檢測到所述注入sql命令段,若檢測到所述注入sql命令段,則存在sql命令注入。

可選的,從所述數(shù)據(jù)庫協(xié)議流量中提取注入sql命令段,包括:

從所述數(shù)據(jù)庫協(xié)議流量中提取sql命令;

對所述sql命令進行模板化處理,得到sql模板,并對每兩個所述sql模板進行對比,得到比較結(jié)果;

根據(jù)所述比較結(jié)果從所述sql模板中提取所述注入sql命令段。

可選的,對所述sql命令進行模板化處理,得到sql模板,并對每兩個所述sql模板進行對比,得到比較結(jié)果,包括:

對第一sql命令進行所述模板化處理,得到sql基線模板;

對除所述第一sql外的其余所述sql命令進行所述模板化處理,得到新sql模板;

對所述sql基線模板與所述新sql模板均以最小單位進行拆分,分別得到第一集合和第二集合;

對所述第一集合中的最小單位與所述第二集合中的最小單位執(zhí)行匹配操作,得到匹配比例;

對所述匹配比例與閾值進行對比,得到比較結(jié)果。

可選的,對所述匹配比例與閾值進行對比,得到比較結(jié)果,包括:

判斷所述匹配比例是否超過閾值;

若所述匹配比例超過所述閾值,則對所述新sql模板附加疑似sql注入風險的標記。

可選的,根據(jù)所述比較結(jié)果從所述sql模板中提取所述注入sql命令段,包括:

從被附加所述標記的所述新sql模板中提取所述注入sql命令段。

本申請還提供了一種sql命令注入的檢測系統(tǒng),該系統(tǒng)包括:

請求數(shù)據(jù)采集單元,用于采集提交給業(yè)務(wù)端的請求數(shù)據(jù);

采集提取單元,用于采集所述業(yè)務(wù)端到數(shù)據(jù)庫端的數(shù)據(jù)庫協(xié)議流量,并從所述數(shù)據(jù)庫協(xié)議流量中提取注入sql命令段;

檢測單元,用于判斷是否能在所述請求數(shù)據(jù)中檢測到所述注入sql命令段,若檢測到所述注入sql命令段,則存在sql命令注入。

可選的,所述采集提取單元包括:

第一提取子單元,用于從所述數(shù)據(jù)庫協(xié)議流量中提取sql命令;

模板化子單元,用于對所述sql命令進行模板化處理,得到sql模板,并對每兩個所述sql模板進行對比,得到比較結(jié)果;

第二提取子單元,用于根據(jù)所述比較結(jié)果從所述sql模板中提取所述注入sql命令段。

可選的,所述模板化子單元包括:

第一模板處理模塊,用于對第一sql命令進行所述模板化處理,得到sql基線模板;

第二模板處理模塊,用于對除所述第一sql外的其余所述sql命令進行所述模板化處理,得到新sql模板;

拆分模塊,用于將所述sql基線模板與所述新sql模板均以最小單位進行拆分,分別得到第一集合和第二集合;

匹配模塊,用于對所述第一集合中的最小單位與所述第二集合中的最小單位執(zhí)行匹配操作,得到匹配比例;

對比模塊,用于對所述匹配比例與閾值進行對比,得到比較結(jié)果。

可選的,所述對比模塊包括:

判斷子模塊,用于判斷所述匹配比例是否超過閾值;

標記子模塊,用于若所述匹配比例超過所述閾值,則對所述新sql模板附加疑似sql注入風險的標記。

可選的,所述第二提取子單元包括:

提取模塊,用于從被附加所述標記的所述新sql模板中提取所述注入sql命令段。

本申請所提供的一種sql命令注入的檢測方法,通過采集提交給業(yè)務(wù)端的請求數(shù)據(jù);采集所述業(yè)務(wù)端到數(shù)據(jù)庫端的數(shù)據(jù)庫協(xié)議流量,并從所述數(shù)據(jù)庫協(xié)議流量中提取注入sql命令段;判斷能否在所述請求數(shù)據(jù)中檢測到所述注入sql命令段,若檢測到所述注入sql命令段,則存在sql命令注入。

顯然,本申請所提供的技術(shù)方案通過在請求數(shù)據(jù)和數(shù)據(jù)庫協(xié)議流量中進行雙端的匹配檢測,若在該請求數(shù)據(jù)中檢測到了從數(shù)據(jù)庫協(xié)議流量中提取出的相同的注入sql命令段,則判定為存在sql命令注入,打破了傳統(tǒng)以特征庫來識別的檢測方法,能夠無法避免外部命令中含有sql命令注入的情況下,以一種更有效、準確率更高的,且無須頻繁更新的sql命令注入的檢測方法來檢測到外部命令中被注入的sql命令,得以更好的保障企業(yè)后臺數(shù)據(jù)庫中數(shù)據(jù)的安全。本申請同時還提供了一種sql命令注入的檢測系統(tǒng),具有上述有益效果,在此不再贅述。

附圖說明

為了更清楚地說明本申請實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請的實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)提供的附圖獲得其它的附圖。

圖1為本申請實施例所提供的一種sql命令注入的檢測方法的流程圖;

圖2為本申請實施例所提供的另一種sql命令注入的檢測方法的流程圖;

圖3為本申請實施例所提供的又一種sql命令注入的檢測方法的流程圖;

圖4為本申請實施例所提供的再一種sql命令注入的檢測方法的流程圖;

圖5為本申請實施例所提供的還一種sql命令注入的檢測方法的流程圖;

圖6為本申請實施例所提供的一種sql命令注入的檢測方法中雙端匹配檢測原理圖;

圖7為本申請實施例所提供的一種sql命令注入的檢測系統(tǒng)的結(jié)構(gòu)圖。

具體實施方式

本申請的核心是提供一種sql命令注入的檢測方法及系統(tǒng),在無法避免外部命令中含有sql命令注入的情況下,以一種更有效、準確率更高的,且無須頻繁更新的sql命令注入的檢測方法來檢測到外部命令中被注入的sql命令,得以更好的保障企業(yè)后臺數(shù)據(jù)庫中數(shù)據(jù)的安全。

為使本申請實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本申請實施例中的附圖,對本申請實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是本申請一部分實施例,而不是全部的實施例?;诒旧暾堉械膶嵤├?,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其它實施例,都屬于本申請保護的范圍。

以下結(jié)合圖1,圖1為本申請實施例所提供的一種sql命令注入的檢測方法的流程圖。

其具體包括以下步驟:

s101:采集提交給業(yè)務(wù)端的請求數(shù)據(jù);

本步驟旨在采集提供提交給業(yè)務(wù)端的請求數(shù)據(jù),為后續(xù)步驟中在外部命令生效端,即,從即將到達數(shù)據(jù)庫端的數(shù)據(jù)庫協(xié)議流量中提取出的注入sql命令段在提交給業(yè)務(wù)端的請求數(shù)據(jù)中做匹配檢測。

其中,提交給業(yè)務(wù)端的請求數(shù)據(jù)是通過web方式進行的表單提交或輸入域名或頁面請求等命令,而由于web應(yīng)用程序開發(fā)人員檢查的時候可能無法面面俱到,惡意的外部攻擊者就意圖在通過web方式在業(yè)務(wù)前端提交的各種請求數(shù)據(jù)中注入惡意的sql命令,該sql命令通常以查詢字符串的方式體現(xiàn),其實它的最終目的是通過這種方式繞開服務(wù)器的防護欺騙服務(wù)器去執(zhí)行注入的惡意sql命令。

s102:采集業(yè)務(wù)端到數(shù)據(jù)庫端的數(shù)據(jù)庫協(xié)議流量,并從數(shù)據(jù)庫協(xié)議流量中提取注入sql命令段;

本步驟旨在從即將到達數(shù)據(jù)庫端的數(shù)據(jù)庫協(xié)議流量中提取得到注入sql命令段,其中,該注入sql命令段是從該業(yè)務(wù)端到數(shù)據(jù)庫端這一數(shù)據(jù)流向上的數(shù)據(jù)庫協(xié)議流量得到的,之所以從該數(shù)據(jù)庫協(xié)議流量中提取該注入sql命令段,是因為該數(shù)據(jù)庫協(xié)議流量馬上就要到達該數(shù)據(jù)庫端生效,且sql命令一般都被攜帶在該數(shù)據(jù)庫協(xié)議流量中,如果該數(shù)據(jù)庫協(xié)議流量真的攜帶有注入sql命令段,一旦進入該數(shù)據(jù)庫端就會隨著其他正常請求命令一起被執(zhí)行,按照外部攻擊者的意愿來進行攻擊操作或獲取相應(yīng)的敏感數(shù)據(jù)信息,而對于web應(yīng)用程序的開發(fā)商來說,敏感數(shù)據(jù)一旦丟失幾乎是毀滅性的打擊,會讓使用者的信息泄露,進而降低對自己程序的評價,甚至轉(zhuǎn)投其他應(yīng)用程序,會有很嚴重的后果。

其中,具體怎樣從該數(shù)據(jù)庫協(xié)議流量中最終提取到該注入sql命令段,方式多種多樣,基于各應(yīng)用程序開發(fā)商的不同、硬件設(shè)備不同、數(shù)據(jù)存在方式不同等各方面因素,在不同的實際場景下會存在不同的從數(shù)據(jù)庫協(xié)議流量中最終提取到該注入sql命令段的方式,此處說的只是從該數(shù)據(jù)庫協(xié)議流量中最終提取到該注入sql命令段的結(jié)果,并不對通過怎樣的手段和流程來獲得做具體限定。

在后續(xù)的其它實施例中會對怎樣從該數(shù)據(jù)庫協(xié)議流量中最終提取得到該注入sql命令段做出詳細的介紹。

s103:判斷是否能在請求數(shù)據(jù)中檢測到注入sql命令段;

本步驟建立在s102的基礎(chǔ)上,拿在s102中提取得到的該注入sql命令段在s101中采集到的提交給業(yè)務(wù)端的各種表單數(shù)據(jù)、輸入域名、查詢請求等進行匹配檢測,旨在看是否能在該請求數(shù)據(jù)中查詢到與該注入sql命令段相同的命令段,以便進行后續(xù)的判定和處理工作。

s104:存在sql命令注入。

本步驟建立在經(jīng)過s103的檢測后,確實在向外部命令輸入端提交的該請求數(shù)據(jù)中檢測到了與在s102中最終提取得到的該注入sql命令段,則判定確實存在sql命令注入行為。

進一步的,在判定確實存在sql命令注入行為后,可以通過各種方式阻止注入了該sql命令段的該數(shù)據(jù)庫協(xié)議流量在數(shù)據(jù)庫端的生效,即,對即將到達數(shù)據(jù)庫端的數(shù)據(jù)庫協(xié)議流量進行攔截,并通過各種預設(shè)路徑對后臺程序開發(fā)管理人員進行預警,以達到警醒的作用,例如,在后臺管理界面進行彈窗提示、發(fā)出報警音、發(fā)送郵件或短信等給管理員等。

基于上述技術(shù)方案,本申請實施例提供的sql命令注入的檢測方法,通過在請求數(shù)據(jù)和數(shù)據(jù)庫協(xié)議流量中進行雙端的匹配檢測,若在該請求數(shù)據(jù)中檢測到了從數(shù)據(jù)庫協(xié)議流量中提取出的相同的注入sql命令段,則判定為存在sql命令注入,打破了傳統(tǒng)以特征庫來識別的檢測方法,能夠無法避免外部命令中含有sql命令注入的情況下,以一種更有效、準確率更高的,且無須頻繁更新的sql命令注入的檢測方法來檢測到外部命令中被注入的sql命令,得以更好的保障企業(yè)后臺數(shù)據(jù)庫中數(shù)據(jù)的安全。

以下結(jié)合圖2,圖2為本申請實施例所提供的另一種sql命令注入的檢測方法的流程圖。

本實施例是針對上一實施例中s102做出的一個具體限定,其它步驟與上一實施例大體一致,在此不再贅述。

其具體包括以下步驟:

s201:采集業(yè)務(wù)端到數(shù)據(jù)庫端的數(shù)據(jù)庫協(xié)議流量;

s202:從數(shù)據(jù)庫協(xié)議流量中提取sql命令;

即從該數(shù)據(jù)庫協(xié)議流量中執(zhí)行提取sql命令的操作,該sql命令段包括了sql命令的主要部分和注入sql命令段。

s203:對sql命令進行模板化處理,得到sql模板,并對每兩個sql模板進行對比,得到比較結(jié)果;

將從s202中提取出的sql命令進行模板化處理,通常情況下,從數(shù)據(jù)庫協(xié)議流量中能夠提取出多個sql命令,也就是說在對每個sql命令分別進行該模板化處理后,會得到多個sql命令,而在得到的多個sql命令中,兩兩的進行對比,旨在比較出各模板之間是否存在差異或者差異是否足夠大。具體的,是串行的一個接一個的對提取到的多個sql命令進行模板化處理,還是并行的同時對所有sql命令一起進行模板化處理,應(yīng)該是實際情況的不同基于一定的原則進行選擇,此處并不做具體的限定。

其中,模板化處理,顧名思義的就是將該sql命令按照一定處理操作形成模板,即,去掉sql命令中可變的參數(shù),同時保留固定不變的部分的處理為模板化處理。例如,例如:將該sql命令“select*fromusernamewherename=’u1’andpassword=’123456’”按照去除變量、保留固定不變的部分后,提取出成模板后“select*fromusernamewherename=’$’andpassword=’$’”,之所以這樣處理,是因為在該sql命令中u1是name的一個變量、123456是password的一個變量,所以將它們視為一個變量$,最終得到這樣的一個模板。

將從數(shù)據(jù)庫協(xié)議流量中提取到的sql命令均執(zhí)行這樣的一個模板化處理,會得到多個sql模板,接下來的目的是在兩兩對比進行差異的比對,比較出兩兩模板之間是否存在差異以及差異的大小,而比較的方式多種多樣,可視應(yīng)用程序開發(fā)廠家的規(guī)模、硬件設(shè)備的使用、設(shè)置習慣等多方面因素進行考慮并基于一定原則進行符合自身利益的變化,此處并不做具體限定。在后續(xù)的其它實施例中會進行詳細的介紹。

s204:根據(jù)比較結(jié)果從sql模板中提取注入sql命令段。

本步驟基于s203的比較結(jié)果,在該比較結(jié)果呈現(xiàn)為兩個相互進行比較的sql模板相似度很高,同時得到了兩個sql模板之間相互存在差異的部分,與另一個sql模板在大體上都相同,僅僅存在些許不同的部分,這些許不同的部分就是需要提取出的該注入sql命令段。

以下結(jié)合圖3,圖3為本申請實施例所提供的又一種sql命令注入的檢測方法的流程圖。

本實施例是對第二實施例中s202做出的一個具體限定,假設(shè)能夠從數(shù)據(jù)庫協(xié)議流量中提取到多個sql命令,其它步驟與上一實施例大體一致,在此不再贅述。

其具體包括以下步驟:

s301:對第一sql命令進行模板化處理,得到sql基線模板;

先對其中的一個sql命令進行去除變量、保留固定的部分的模板化處理,得到該sql基線模板。其中,怎樣從多個sql命令中選取一個的方式多種多樣,可以遵循多種原則,例如,考慮到sql命令都有一套不會變化太多的書寫格式,可以選擇形成命令的最小單位個數(shù)最少的,因為個數(shù)最小也就越容易與其它的sql命令存在相同的部分,容易找到共同點,也就好作為基線模板使用;也可以隨機挑選,因為最終的目標是每兩個sql命令形成的模板都要進行比較,不管基于何種原則,只需要兩兩比較完畢即可,此處并不對如何選擇做具體限定。

s302:對除第一sql命令外的其余sql命令進行模板化處理,得到新sql模板;

與s203相對應(yīng),可以選擇串行的處理方式也可以選擇并行的處理方式,其中各自有各自的優(yōu)點,串行的處理方式的優(yōu)點在于可以盡可能小的占用處理能力和資源;并行的處理方式的優(yōu)點在于可以盡可能快的完成模板化處理的過程,省時,可以根據(jù)實際情況靈活選擇,靈活切換。

s303:將sql基線模板與新sql模板均以最小單位進行拆分,分別得到第一集合和第二集合;

這里通過一個實際的拆分過程來描述這個過程:

sql基線模板:select*fromusernamewherename=’$’andpassword=’$’;新sql模板:select*fromusernamewherename=’$’andpassword=’$’or$=$,將這兩個模板按照原排列順序進行按照構(gòu)成命令最小單位進行拆分,分別得到包含如下多個最小單位的第一集合和第二集合。

其中,第一集合:{select*from,username,where,name=’$’,and,password=’$’};第二集合:{select*from,username,where,name=’$’,and,password=’$’,or$=$}。

當然,就如何進行拆分就有很多種方法,本實施例只是就通常可能會使用到的一種方法進行了描述,即,只要能夠為后續(xù)步驟中兩兩模板作對比得到兩者之間的差異程度即可,并不做具體限定。

s304:對第一集合中的最小單位與第二集合中的最小單位執(zhí)行匹配操作,得到匹配比例;

本步驟為依次按順序從第一集合中選取一個最小單位在第二集合中進行匹配對比,目的在于看是否能夠在第二集合中匹配到相同的最小單位。即,首先拿select*from這個拆分出的最小單位在第二集合中進行匹配對比,顯然在第二集合中的第一個最小單位中就找到的相同的最小單位,接著的換下一個最小單位:username再次在第二集合中進行匹配,依次類推。

就本實施例所舉出的這個例子來看,可以很明顯得出相似度為85.7%,有6個最小單位相同。

s304:對匹配比例與閾值進行對比,得到比較結(jié)果。

本步驟所說的閾值是根據(jù)應(yīng)用程序開發(fā)廠家基于對sql命令的自身理解以及一定的認識所設(shè)定的一個大致相似度范圍,即,通過該設(shè)定的閾值來判定是否該新sql模板是根據(jù)該sql基線模板經(jīng)過微調(diào)、變異出來的,還是就是完完全全區(qū)別于該sql基線模板為另一個sql基線模板。通常情況下,該閾值所設(shè)定的相似度范圍也不是固定的,可能各個應(yīng)用程序的廠家基于不同的重要性和規(guī)模以及各方面因素、出于各種原因的考慮做出一定差異化的改變,此處并不對該閾值的具體范圍做限定。例如,一個比較適合的閾值可以為55-70%,只要處于該閾值范圍內(nèi),則認定為該新sql模板相似與該sql基線模板,并以相似這個結(jié)果進行后續(xù)操作。

以下結(jié)合圖4,圖4為本申請實施例所提供的再一種sql命令注入的檢測方法的流程圖。

本實施例是對第三實施例中s304做出的一個具體限定,其它步驟與上一實施例大體一致,在此不再贅述。

其具體包括以下步驟:

s401:對第一集合中的最小單位與第二集合中的最小單位執(zhí)行匹配操作,得到匹配比例;

s402:判斷匹配比例是否超過閾值;

假設(shè)該閾值取60%,即應(yīng)該在該匹配比例超過60%時認定該新sql模板與該sql基線模板大體相同,同時將剩下的不同的部分被后續(xù)處理過程提取出來當做注入sql命令段;而在當該匹配比例低于該60%的閾值時,則認定這兩個sql模板大體上不相同,則將該大體不相同的新sql模板當做一個新的sql基線模板來做后續(xù)匹配使用。

s403:對新sql模板附加疑似sql注入風險的標記;

本步驟是建立在經(jīng)過s402的判斷,且判斷結(jié)果為該匹配比例超過了閾值,可以判定為該新sql模板是基于該sql基線模板進行了微調(diào)、變異出來的,并非是一個新的sql基線模板,所以此處為該新sql模板附加一個疑似sql注入風險的標記,便于在后續(xù)的檢測步驟中進行識別。

以下結(jié)合圖5,圖5為本申請實施例所提供的還一種sql命令注入的檢測方法的流程圖。

本實施例是建立在一個具體的實際情景下,在本場景下的數(shù)據(jù)庫協(xié)議流量中提取到了兩條sql命令,同時在通過web方式向業(yè)務(wù)端提交的是輸入域名的命令。其中,兩條sql命令分別為:

select*fromusernamewherename=’lhd’andpassword=’11223344’;

select*fromusernamewherename=’lhd’andpassword=’11223344’or10=10。

s501:采集到提交給業(yè)務(wù)端的輸入域名命令;

s502:采集業(yè)務(wù)端到數(shù)據(jù)庫端的數(shù)據(jù)庫協(xié)議流量;

s503:從數(shù)據(jù)庫協(xié)議流量中提取到兩個sql命令;

s504:依次對這兩sql命令進行模板化處理,得到sql基線模板和新sql模板;

得到sql基線模板:select*fromusernamewherename=’$’andpassword=’$’;新sql模板:select*fromusernamewherename=’$’andpassword=’$’or$=$。

s505:對得到的兩個模板按最小單位進行拆分,得到第一集合和第二集合;

得到第一集合:{select*from,username,where,name=’$’,and,password=’$’};第二集合:{select*from,username,where,name=’$’,and,password=’$’,or$=$}。

s506:對第一集合中的最小單位與第二集合中的最小單位執(zhí)行匹配操作;

s507:第一集合與第二集合的匹配比例為85.7%,并提取出不匹配的注入sql命令段;

相同的最小單位為6個,第二集合中共有7個最小單位,則顯而易見的該匹配比例為85.7%,并相應(yīng)的提取出不匹配的注入sql命令段:or10=10。

s508:利用注入sql命令段在輸入域名命令中進行匹配檢測;

將提取到的注入sql命令段:or10=10與在業(yè)務(wù)端采集到的通過web方式提交的請求數(shù)據(jù)進行匹配校隊,旨在看該注入sql命令段是否出現(xiàn)在該請求數(shù)據(jù)中,這種校隊方式與該注入sql命令段具體注入在sql命令的何位置無關(guān),具體匹配校隊方法原理圖請參見圖6。

本步驟采用了本申請這樣的雙端對比檢測的方式,可以很好的避免傳統(tǒng)方法使用特征庫的對比檢測容易出現(xiàn)檢測不到的缺陷,因為直接使用最小單位進行一一對比檢測,不管這個sql命令段插入在請求數(shù)據(jù)中的哪個位置,只要存在就一定能夠發(fā)現(xiàn),被檢測出來,不會因為在傳統(tǒng)方法中,因為插入位置的不同,導致現(xiàn)有技術(shù)中存在的因變異后的sql命令擁有不同的特征庫進而無法檢測到的缺點。

s509:檢測到相同sql命令段;

檢測到相同的sql命令段,判定存在sql注入風險。

s510:通過彈出警示彈窗來提醒應(yīng)用程序后臺開發(fā)人員。

基于上述技術(shù)方案,本申請實施例提供的sql命令注入的檢測方法,通過在請求數(shù)據(jù)和數(shù)據(jù)庫協(xié)議流量中進行雙端的匹配檢測,若在該請求數(shù)據(jù)中檢測到了從數(shù)據(jù)庫協(xié)議流量中提取出的相同的注入sql命令段,則判定為存在sql命令注入,打破了傳統(tǒng)以特征庫來識別的檢測方法,能夠無法避免外部命令中含有sql命令注入的情況下,以一種更有效、準確率更高的,且無須頻繁更新的sql命令注入的檢測方法來檢測到外部命令中被注入的sql命令,得以更好的保障企業(yè)后臺數(shù)據(jù)庫中數(shù)據(jù)的安全。

上面提及的幾種方式,只是從實際出發(fā)提出的幾種具體例子,當然可以有其他的方式來達到同樣的效果,此處并不做具體限定。

下面請參見圖7,圖7為本申請實施例所提供的一種sql命令注入的檢測系統(tǒng)的結(jié)構(gòu)框圖。

該系統(tǒng)可以包括:

請求數(shù)據(jù)采集單元100,用于采集提交給業(yè)務(wù)端的請求數(shù)據(jù);

采集提取單元200,用于采集業(yè)務(wù)端到數(shù)據(jù)庫端的數(shù)據(jù)庫協(xié)議流量,并從數(shù)據(jù)庫協(xié)議流量中提取注入sql命令段;

檢測單元300,用于判斷是否能在請求數(shù)據(jù)中檢測到注入sql命令段,若檢測到注入sql命令段,則存在sql命令注入。

其中,該采集提取單元200包括:

第一提取子單元,用于從數(shù)據(jù)庫協(xié)議流量中提取sql命令;

模板化子單元,用于對sql命令進行模板化處理,得到sql模板,并對每兩個sql模板進行對比,得到比較結(jié)果;

第二提取子單元,用于根據(jù)比較結(jié)果從sql模板中提取注入sql命令段。

其中,該模板化子單元包括:

第一模板處理模塊,用于對第一sql命令進行模板化處理,得到sql基線模板;

第二模板處理模塊,用于對除第一sql外的其余sql命令進行模板化處理,得到新sql模板;

拆分模塊,用于將sql基線模板與新sql模板均以最小單位進行拆分,分別得到第一集合和第二集合;

匹配模塊,用于對第一集合中的最小單位與第二集合中的最小單位執(zhí)行匹配操作,得到匹配比例;

對比模塊,用于對匹配比例與閾值進行對比,得到比較結(jié)果。

其中,該對比模塊包括:

判斷子模塊,用于判斷匹配比例是否超過閾值;

標記子模塊,用于若匹配比例超過閾值,則對新sql模板附加疑似sql注入風險的標記。

其中,該第二提取子單元包括:

提取模塊,用于從被附加標記的新sql模板中提取注入sql命令段。

說明書中各個實施例采用遞進的方式描述,每個實施例重點說明的都是與其它實施例的不同之處,各個實施例之間相同相似部分互相參見即可。對于實施例公開的裝置而言,由于其與實施例公開的方法相對應(yīng),所以描述的比較簡單,相關(guān)之處參見方法部分說明即可。

專業(yè)人員還可以進一步意識到,結(jié)合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬件、計算機軟件或者二者的結(jié)合來實現(xiàn),為了清楚地說明硬件和軟件的可互換性,在上述說明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計約束條件。專業(yè)技術(shù)人員可以對每個特定的應(yīng)用來使用不同方法來實現(xiàn)所描述的功能,但是這種實現(xiàn)不應(yīng)認為超出本申請的范圍。

以上對本申請所提供的sql命令注入的檢測方法及系統(tǒng)進行了詳細介紹。本文中應(yīng)用了具體個例對本申請的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本申請的方法及其核心思想。應(yīng)當指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本申請原理的前提下,還可以對本申請進行若干改進和修飾,這些改進和修飾也落入本申請權(quán)利要求的保護范圍內(nèi)。

還需要說明的是,在本說明書中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其它變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其它要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。

當前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1