欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種防御SQL注入攻擊的數(shù)據(jù)庫(kù)代理裝置的制作方法

文檔序號(hào):11407976閱讀:249來(lái)源:國(guó)知局
一種防御SQL注入攻擊的數(shù)據(jù)庫(kù)代理裝置的制造方法

本發(fā)明涉及網(wǎng)絡(luò)安全領(lǐng)域,更具體地說(shuō),涉及一種防御sql注入攻擊的數(shù)據(jù)庫(kù)代理裝置。



背景技術(shù):

在當(dāng)今網(wǎng)絡(luò)環(huán)境下,數(shù)據(jù)庫(kù)作為重要的存儲(chǔ)工具,經(jīng)常存儲(chǔ)著大量有價(jià)值的數(shù)據(jù),這些數(shù)據(jù)包含用戶信息、企業(yè)數(shù)據(jù)、金融財(cái)政、商業(yè)機(jī)密、知識(shí)產(chǎn)權(quán)、客戶訂單信息等內(nèi)容,其重要程度不言而喻。因此,數(shù)據(jù)庫(kù)往往會(huì)成為網(wǎng)絡(luò)黑客的主要攻擊對(duì)象。網(wǎng)絡(luò)黑客利用各種途徑、各種攻擊工具、各種欺騙手段來(lái)獲取其想得到的信息,因此,保證數(shù)據(jù)庫(kù)安全變得非常重要。

最常見(jiàn)的數(shù)據(jù)庫(kù)安全威脅是sql注入攻擊,sql注入攻擊指的是通過(guò)構(gòu)建特殊的輸入語(yǔ)句傳入web應(yīng)用服務(wù)器,而這些輸入大都是sql語(yǔ)法里的一些組合,通過(guò)使web應(yīng)用程序執(zhí)行sql語(yǔ)句進(jìn)而執(zhí)行攻擊者所要的操作。這是由于系統(tǒng)應(yīng)用未對(duì)客戶端輸入語(yǔ)句進(jìn)行合法性檢查,攻擊者可以通過(guò)提交一段數(shù)據(jù)庫(kù)查詢代碼,根據(jù)應(yīng)用程序返回的結(jié)果,獲得某些想得知的數(shù)據(jù)。

針對(duì)sql注入攻擊,傳統(tǒng)解決方案絕大多數(shù)是在系統(tǒng)被攻擊之后的“亡羊補(bǔ)牢”式防護(hù),但在系統(tǒng)出現(xiàn)新的注入攻擊點(diǎn)時(shí),仍然束手無(wú)策。具體來(lái)說(shuō),傳統(tǒng)防御技術(shù)都是基于黑名單對(duì)客戶端輸入語(yǔ)句進(jìn)行合法性檢查,當(dāng)發(fā)現(xiàn)客戶端的輸入語(yǔ)句在黑名單內(nèi),則對(duì)其進(jìn)行攔截,進(jìn)而實(shí)現(xiàn)基于已知注入漏洞的sql注入防御。該方案存在以下兩方面的嚴(yán)重問(wèn)題:1)對(duì)于未知注入漏洞無(wú)能為力;2)黑名單過(guò)多會(huì)產(chǎn)生高誤報(bào)問(wèn)題,進(jìn)而影響正常用戶使用。

針對(duì)數(shù)據(jù)庫(kù)sql注入攻擊威脅,中國(guó)專利申請(qǐng)《sql注入攻擊檢測(cè)方法及其裝置》公開(kāi)了一種sql注入攻擊檢測(cè)方案,該方案也是基于惡意人員進(jìn)行sql注入攻擊的已知行為特征,雖然在一定程度上克服了傳統(tǒng)sql檢測(cè)機(jī)制的缺陷,緩解了傳統(tǒng)sql注入攻擊檢測(cè)方法中存在高誤報(bào)率的問(wèn)題,但其對(duì)未知攻擊行為的防御能力仍然無(wú)能為力。此外,美國(guó)專利《sqlinjectionattack

detectionsystemsupportingmultipledatabasetypes》公開(kāi)了一種支持多類型數(shù)據(jù)庫(kù)的sql注入攻擊檢測(cè)系統(tǒng),其包含多個(gè)不同語(yǔ)法規(guī)則的sql注入攻擊檢測(cè)模塊,對(duì)用戶提交的參數(shù)進(jìn)行過(guò)濾檢查,因此該方案也是一種基于已知攻擊行為特征的防御手段,對(duì)含有未知特征的sql注入攻擊無(wú)效。



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

針對(duì)上述現(xiàn)有技術(shù)中存在的不足,本發(fā)明的目的在于提供一種防御sql注入攻擊的數(shù)據(jù)庫(kù)代理裝置,以防御未知攻擊行為,從而實(shí)現(xiàn)數(shù)據(jù)庫(kù)的高安全性、高可靠性。

為了實(shí)現(xiàn)上述目的,本發(fā)明采用如下技術(shù)方案:

一種防御sql注入攻擊的數(shù)據(jù)庫(kù)代理裝置,包括依次連接在2n+1個(gè)應(yīng)用服務(wù)器和一數(shù)據(jù)庫(kù)服務(wù)器之間的一語(yǔ)句接收模塊、一標(biāo)簽處理模塊、一語(yǔ)句分組模塊、一注入攻擊檢測(cè)模塊和一語(yǔ)句執(zhí)行模塊,其中:

所述語(yǔ)句接收模塊包括2n+1個(gè)與所述應(yīng)用服務(wù)器一一對(duì)應(yīng)連接的監(jiān)聽(tīng)端口,各監(jiān)聽(tīng)端口設(shè)置為接收對(duì)應(yīng)應(yīng)用服務(wù)器轉(zhuǎn)發(fā)的sql語(yǔ)句;

所述標(biāo)簽處理模塊設(shè)置為檢測(cè)各監(jiān)聽(tīng)端口接收的sql語(yǔ)句是否包含與相應(yīng)監(jiān)聽(tīng)端口對(duì)應(yīng)的標(biāo)簽而不包含與其它監(jiān)聽(tīng)端口對(duì)應(yīng)的標(biāo)簽,若是,則將該sql語(yǔ)句中的標(biāo)簽去掉后發(fā)送至所述語(yǔ)句分組模塊,否則,將該sql語(yǔ)句丟棄;

所述語(yǔ)句分組模塊設(shè)置為接收去掉標(biāo)簽的sql語(yǔ)句,并將接收到的相同sql語(yǔ)句分成一組;

所述注入攻擊檢測(cè)模塊設(shè)置為檢測(cè)每組中的sql語(yǔ)句是否達(dá)到2n+1條或n+1條,若達(dá)到2n+1條,則將該組中的sql語(yǔ)句輸出至語(yǔ)句執(zhí)行模塊,若達(dá)到n+1條而未達(dá)到2n+1條,則將該組中的sql語(yǔ)句輸出至語(yǔ)句執(zhí)行模塊,同時(shí)發(fā)出異常報(bào)警信號(hào),若未達(dá)到n+1條,則將該組中的sql語(yǔ)句丟棄并發(fā)出異常報(bào)警信號(hào);

所述語(yǔ)句執(zhí)行模塊設(shè)置為將接收到的sql語(yǔ)句發(fā)送至所述數(shù)據(jù)庫(kù)服務(wù)器。

進(jìn)一步地,所述語(yǔ)句分組模塊在分組時(shí),若同一組中的sql語(yǔ)句不足2n+1條,則等待后續(xù)sql語(yǔ)句的到來(lái),直至等待時(shí)間超過(guò)預(yù)設(shè)的有效時(shí)間閾值。

進(jìn)一步地,所述應(yīng)用服務(wù)器和所述監(jiān)聽(tīng)端口的數(shù)量為三個(gè)。

綜上所述,本發(fā)明的主要特點(diǎn)在于對(duì)應(yīng)用服務(wù)器輸出的sql語(yǔ)句進(jìn)行標(biāo)簽合法性檢測(cè),有效防御惡意用戶或黑客的攻擊行為。與現(xiàn)有技術(shù)相比,本發(fā)明極大地提高了數(shù)據(jù)庫(kù)的安全性,有效地防御了針對(duì)數(shù)據(jù)庫(kù)的sql注入攻擊,而且即使在攻擊者得到了系統(tǒng)全部標(biāo)簽,也不能攻擊成功。

附圖說(shuō)明

圖1為本發(fā)明防御sql注入攻擊的數(shù)據(jù)庫(kù)代理裝置的結(jié)構(gòu)框圖;

圖2為本發(fā)明中語(yǔ)句接收模塊所接收內(nèi)容的一個(gè)實(shí)施例;

圖3為本發(fā)明中標(biāo)簽處理模塊處理后的結(jié)果;

圖4為圖3中的處理結(jié)果經(jīng)過(guò)分組模塊分組后的結(jié)果;

圖5為圖4中的分組結(jié)果經(jīng)過(guò)注入攻擊檢測(cè)模塊處理后的檢測(cè)結(jié)果;

圖6為圖5中的檢測(cè)結(jié)果經(jīng)過(guò)執(zhí)行模塊處理后輸入數(shù)據(jù)庫(kù)服務(wù)器的示意圖。

具體實(shí)施方式

下面結(jié)合具體實(shí)施例對(duì)本發(fā)明進(jìn)行詳細(xì)說(shuō)明。以下實(shí)施例將有助于本領(lǐng)域的技術(shù)人員進(jìn)一步理解本發(fā)明,但不以任何形式限制本發(fā)明。應(yīng)當(dāng)指出的是,對(duì)本領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進(jìn)。這些都屬于本發(fā)明的保護(hù)范圍。

本發(fā)明提供的防御sql注入攻擊的數(shù)據(jù)庫(kù)代理裝置如圖1所示,包括依次連接在2n+1個(gè)(圖中示出為3個(gè))應(yīng)用服務(wù)器和一數(shù)據(jù)庫(kù)服務(wù)器之間的一語(yǔ)句接收模塊、一標(biāo)簽處理模塊、一語(yǔ)句分組模塊、一注入攻擊檢測(cè)模塊和一語(yǔ)句執(zhí)行模塊。

在本發(fā)明中,語(yǔ)句接收模塊包括2n+1個(gè)(圖中示出為3個(gè))監(jiān)聽(tīng)端口,這些監(jiān)聽(tīng)端口分別與應(yīng)用服務(wù)器一一對(duì)應(yīng)連接,用于接收對(duì)應(yīng)應(yīng)用服務(wù)器轉(zhuǎn)發(fā)的針對(duì)數(shù)據(jù)庫(kù)服務(wù)器中內(nèi)容進(jìn)行增、刪、改等操作的sql語(yǔ)句。

標(biāo)簽處理模塊與各監(jiān)聽(tīng)端口分別連接,用于處理各監(jiān)聽(tīng)端口所接收的sql語(yǔ)句,即,通過(guò)檢查各監(jiān)聽(tīng)端口所接收的sql語(yǔ)句中的關(guān)鍵字是否含有與該監(jiān)聽(tīng)端口對(duì)應(yīng)的標(biāo)簽字符串來(lái)判斷此sql語(yǔ)句的合法性,若不含有,則將該語(yǔ)句進(jìn)行丟棄處理;若含有,則進(jìn)一步判斷各監(jiān)聽(tīng)端口所接收的sql語(yǔ)句中的關(guān)鍵字是否含有與其它監(jiān)聽(tīng)端口對(duì)應(yīng)的標(biāo)簽字符串,若不含有,則判定為合法sql語(yǔ)句,對(duì)其進(jìn)行去標(biāo)簽化處理后發(fā)送到語(yǔ)句分組模塊,若含有其它標(biāo)簽則將該語(yǔ)句進(jìn)行丟棄處理。

語(yǔ)句分組模塊連接在標(biāo)簽處理模塊之后,用于對(duì)接收到的合法sql語(yǔ)句進(jìn)行分組并將分組結(jié)果輸出至注入攻擊檢測(cè)模塊。具體分組原則是:將內(nèi)容相同的語(yǔ)句分成一組,當(dāng)同一組中的sql語(yǔ)句不足2n+1條時(shí),等待后續(xù)sql語(yǔ)句的到來(lái)(等待是因?yàn)榫W(wǎng)絡(luò)可能延遲,同一個(gè)請(qǐng)求對(duì)應(yīng)的語(yǔ)句可能不在同一時(shí)間內(nèi)到達(dá)),直至等待的時(shí)間超過(guò)預(yù)設(shè)的有效時(shí)間閾值。

注入攻擊檢測(cè)模塊連接在語(yǔ)句分組模塊之后,其用于檢測(cè)語(yǔ)句分組模塊所分各組中的sql語(yǔ)句是否達(dá)到2n+1條或者n+1條(即檢測(cè)各監(jiān)聽(tīng)端口接收到的語(yǔ)句完全一致或者大多數(shù)一致)。若一組中的語(yǔ)句達(dá)到2n+1條(即各監(jiān)聽(tīng)端口接收到的語(yǔ)句完全一致),認(rèn)為該組中的sql語(yǔ)句是正常語(yǔ)句,則將對(duì)應(yīng)的sql語(yǔ)句輸出至語(yǔ)句執(zhí)行模塊;若一組中的語(yǔ)句僅達(dá)到n+1條但未達(dá)到2n+1條(即各監(jiān)聽(tīng)端口接收到的語(yǔ)句大多數(shù)一致),認(rèn)為該組中的sql語(yǔ)句可能被攻擊,則將對(duì)應(yīng)的sql語(yǔ)句輸出至語(yǔ)句執(zhí)行模塊,同時(shí)向外圍安全監(jiān)控中心發(fā)出異常報(bào)警信號(hào);若一組中的語(yǔ)句未達(dá)到n+1條(即各監(jiān)聽(tīng)端口接收到的語(yǔ)句大多數(shù)不一致),認(rèn)為該組中的sql語(yǔ)句是攻擊語(yǔ)句,則將對(duì)應(yīng)的sql語(yǔ)句進(jìn)行丟棄處理,同時(shí)向外圍安全監(jiān)控中心發(fā)出異常報(bào)警信號(hào)。

語(yǔ)句執(zhí)行模塊連接在注入攻擊檢測(cè)模塊之后,是本發(fā)明代理裝置的最后一個(gè)模塊,其后與數(shù)據(jù)庫(kù)服務(wù)器相連。語(yǔ)句執(zhí)行模塊負(fù)責(zé)將接收到的sql語(yǔ)句發(fā)送給后端的數(shù)據(jù)庫(kù)服務(wù)器予以執(zhí)行。

根據(jù)圖1所示,本發(fā)明的工作原理為:當(dāng)客戶端發(fā)送的是正常http請(qǐng)求時(shí),客戶端正常的http請(qǐng)求不含有sql語(yǔ)句,而是web應(yīng)用服務(wù)器在處理http請(qǐng)求時(shí)會(huì)向數(shù)據(jù)庫(kù)發(fā)送sql語(yǔ)句,如客戶端點(diǎn)擊頁(yè)面的查詢按鈕(如查詢年齡大于50的人),web應(yīng)用服務(wù)器就會(huì)向數(shù)據(jù)庫(kù)發(fā)送查詢年齡大于50的sql語(yǔ)句,通過(guò)請(qǐng)求復(fù)制模塊,正常的http請(qǐng)求會(huì)被復(fù)制轉(zhuǎn)發(fā)到后端三個(gè)web服務(wù)器上,這三個(gè)web服務(wù)器會(huì)產(chǎn)生含有各自對(duì)應(yīng)監(jiān)聽(tīng)端口的標(biāo)簽的sql語(yǔ)句,因?yàn)槊總€(gè)web服務(wù)器中關(guān)于數(shù)據(jù)庫(kù)的sql操作語(yǔ)句均被提前加上各自對(duì)應(yīng)監(jiān)聽(tīng)端口的標(biāo)簽,所以發(fā)送到各個(gè)監(jiān)聽(tīng)端口的sql語(yǔ)句有且僅有各自對(duì)應(yīng)的標(biāo)簽,因此能同時(shí)通過(guò)各標(biāo)簽處理模塊的驗(yàn)證。當(dāng)客戶端發(fā)送的是含有sql注入攻擊的http請(qǐng)求時(shí),請(qǐng)求復(fù)制模塊對(duì)客戶端請(qǐng)求進(jìn)行復(fù)制分發(fā),應(yīng)用服務(wù)器向后端數(shù)據(jù)庫(kù)代理裝置對(duì)應(yīng)的監(jiān)聽(tīng)端口發(fā)送請(qǐng)求sql語(yǔ)句,但攻擊者通常不知道標(biāo)簽,因而其寫(xiě)的注入代碼中的sql語(yǔ)句一般不含有標(biāo)簽,退一步講,黑客即使知道全部標(biāo)簽也無(wú)法構(gòu)造一條攻擊語(yǔ)句同時(shí)通過(guò)各標(biāo)簽處理模塊的驗(yàn)證,因?yàn)槿粢粭l攻擊語(yǔ)句通過(guò)了端口1的驗(yàn)證,說(shuō)明此攻擊語(yǔ)句的所有sql關(guān)鍵字都含有標(biāo)簽1,沒(méi)有關(guān)鍵字含有標(biāo)簽2、標(biāo)簽3,因此這條攻擊語(yǔ)句無(wú)法通過(guò)端口1以外的其它端口的驗(yàn)證。例如攻擊者的攻擊語(yǔ)句為:;and(selectcount(*)fromsysobjects)>0,首先閉合了正常的sql語(yǔ)句,然后執(zhí)行自己注入的sql語(yǔ)句,當(dāng)攻擊者知道全部標(biāo)簽時(shí),會(huì)構(gòu)造含有所有標(biāo)簽的注入語(yǔ)句,如:;and1(select1count1(*)from1sysobjects)>10;and2(select2count2(*)from2sysobjects)>20;and3(select3count3(*)from3sysobjects)>30。當(dāng)此攻擊語(yǔ)句通過(guò)標(biāo)簽1端口進(jìn)行合法性判別時(shí),因含有標(biāo)簽2和3而被判定為非法語(yǔ)句而被丟棄,通過(guò)標(biāo)簽2端口和標(biāo)簽3端口判別時(shí)處理結(jié)果一樣。

圖2-圖6示出了本發(fā)明一個(gè)應(yīng)用示例的工作過(guò)程:

首先,如圖2所示,語(yǔ)句接收模塊接收到來(lái)自三個(gè)應(yīng)用服務(wù)器的帶有標(biāo)簽的9條sql語(yǔ)句,即,一個(gè)“標(biāo)簽1+sql1”語(yǔ)句、一個(gè)“標(biāo)簽2+sql1”語(yǔ)句、一個(gè)“標(biāo)簽3+sql1”語(yǔ)句、一個(gè)“標(biāo)簽1+sql2”語(yǔ)句、一個(gè)“標(biāo)簽2+sql2”語(yǔ)句、一個(gè)“標(biāo)簽3+sql2”語(yǔ)句、一個(gè)“標(biāo)簽1+sql3”語(yǔ)句、一個(gè)“標(biāo)簽2+sql3”語(yǔ)句以及一個(gè)“標(biāo)簽3+sql4”語(yǔ)句。

其次,標(biāo)簽處理模塊對(duì)每個(gè)監(jiān)聽(tīng)端口所接收的sql語(yǔ)句進(jìn)行處理,例如在處理監(jiān)聽(tīng)端口1接收的sql語(yǔ)句時(shí),應(yīng)檢查其接收到的sql語(yǔ)句中的所有sql關(guān)鍵字是否都含有關(guān)鍵字標(biāo)簽1,如有,則認(rèn)為是合法語(yǔ)句,去除標(biāo)簽,處理結(jié)果如圖3。

然后,語(yǔ)句分組模塊將去標(biāo)簽處理后的各語(yǔ)句中由不同監(jiān)聽(tīng)端口接收的內(nèi)容相同的sql語(yǔ)句分為一組,共分成了四組。如圖4所示,三個(gè)“sql1”語(yǔ)句為一組,三個(gè)“sql2”語(yǔ)句為一組,兩個(gè)“sql3”語(yǔ)句為一組,一個(gè)“sql4”語(yǔ)句為一組。

而后,注入攻擊檢測(cè)模塊判斷每組語(yǔ)句是否為攻擊語(yǔ)句,如圖5所示,組1、組2中的語(yǔ)句為3條,則認(rèn)為“sql1”、“sql2是正常語(yǔ)句,輸出“sql1”;組3中的語(yǔ)句為2條,超過(guò)半數(shù),認(rèn)為可能遭受惡意sql注入攻擊行為,在輸出“sql3”的同時(shí)發(fā)出異常報(bào)警信號(hào);組四中的語(yǔ)句為1條,少于半數(shù),認(rèn)為一定是惡意攻擊語(yǔ)句,將“sql4”丟棄,并發(fā)出異常報(bào)警信號(hào)。

最后,如圖6所示,語(yǔ)句執(zhí)行模塊將注入攻擊檢測(cè)模塊的輸出語(yǔ)句“sql1”、“sql2”、“sql3”發(fā)送給數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行執(zhí)行。

以上對(duì)本發(fā)明的具體實(shí)施例進(jìn)行了描述。需要理解的是,本發(fā)明并不局限于上述特定實(shí)施方式,本領(lǐng)域技術(shù)人員可以在權(quán)利要求的范圍內(nèi)做出各種變形或修改,這并不影響本發(fā)明的實(shí)質(zhì)內(nèi)容。本發(fā)明中未盡詳述的內(nèi)容為本領(lǐng)域公知的內(nèi)容。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
宜章县| 濮阳市| 丰原市| 扶沟县| 兴国县| 高碑店市| 唐海县| 莱芜市| 平乐县| 九台市| 吴江市| 塔城市| 土默特左旗| 商河县| 云梦县| 辰溪县| 石台县| 舟山市| 陵川县| 龙游县| 密山市| 穆棱市| 甘孜| 四平市| 靖安县| 大洼县| 基隆市| 酉阳| 道孚县| 南江县| 嘉荫县| 五台县| 寻乌县| 建德市| 宜宾县| 娱乐| 阆中市| 龙陵县| 灌阳县| 大荔县| 谢通门县|