国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

淺談基于序列對(duì)比的SQL注入攻擊檢測方法

2016-05-18 04:47:29
電子制作 2016年18期
關(guān)鍵詞:字符串語句應(yīng)用程序

淺談基于序列對(duì)比的SQL注入攻擊檢測方法

杜文華 民航廣西空管分局

在現(xiàn)代網(wǎng)絡(luò)迅猛發(fā)展的背景下,Web應(yīng)用程序都采用了分布式的三級(jí)架構(gòu),由于數(shù)據(jù)庫中存在大量敏感的信息數(shù)據(jù),這使其遭受頻繁的網(wǎng)絡(luò)攻擊,并尤以SQL注入攻擊為甚,這嚴(yán)重影響了網(wǎng)絡(luò)應(yīng)用安全,為此,需要采用新的基于序列比對(duì)方法的SQL注入攻擊檢測方法和技術(shù),在滲透測試和程序分析相結(jié)合的方式下,實(shí)現(xiàn)對(duì)SQL注入漏洞的檢測定位。

序列;對(duì)比;SQL注入;攻擊;檢測

現(xiàn)代互聯(lián)網(wǎng)正在迅猛發(fā)展,然而各種Web服務(wù)器存在一定的漏洞以及程序存在非嚴(yán)密性,致使SQL注入攻擊手段成為了針對(duì)Web服務(wù)器的主流方式,在分布式的Web服務(wù)器中,存在三級(jí)架構(gòu),即:數(shù)據(jù)庫服務(wù)器、應(yīng)用服務(wù)器和客戶端,在Web服務(wù)器站點(diǎn)膨脹的態(tài)勢下,難免存在SQL注入的缺陷,一些別有用心的用戶可以利用服務(wù)器中的疏漏,非法侵入服務(wù)器獲取網(wǎng)站管理員的權(quán)限,威脅服務(wù)器內(nèi)網(wǎng)的系統(tǒng)信息,導(dǎo)致網(wǎng)絡(luò)應(yīng)用安全受到嚴(yán)重威脅。我們需要針對(duì)SQL注入漏洞進(jìn)行分析,并提出有效的基于序列對(duì)比的SQL注入攻擊檢測方法。

1. SQL注入攻擊綜述

SQL注入攻擊是指Web程序目標(biāo)系統(tǒng)通過字符串的方式,實(shí)現(xiàn)用戶輸入接收,締造對(duì)應(yīng)的SQL語句進(jìn)行數(shù)據(jù)庫合法操作。由于Web服務(wù)器存在一定的漏洞,導(dǎo)致一些攻擊者利用該字符串注入惡意代碼,在數(shù)據(jù)庫系統(tǒng)中進(jìn)行運(yùn)行。這是由于沒有對(duì)用戶輸入進(jìn)行驗(yàn)證處理造成的,被稱為“污染值”,當(dāng)這些“污染值”累積到達(dá)陷入點(diǎn)時(shí),就會(huì)引發(fā)SQL注入攻擊。在Java應(yīng)用程序中,處理數(shù)據(jù)輸入的常見操作的注入點(diǎn)有g(shù)et Parameter()、get Query String()等;“污染值”傳播的變量賦值等操作有String、String Buffer等;陷入點(diǎn)主要是向數(shù)據(jù)庫提交SQL查詢語句的函數(shù)如:execute Query、Statement、add Batch等。

SQL注入攻擊的方式主要包括以下幾種:

(1)重言式攻擊。這是一種通過在查詢語句中插入一個(gè)重言式,而非法獲得網(wǎng)站管理員權(quán)限的方法,在Web服務(wù)器中的SELECT或UPDATE語句的WHERE條件中,如果插入了重言式,那么,數(shù)據(jù)庫表中的每一行都會(huì)被納入到結(jié)果集合中。以網(wǎng)上銀行為例,假設(shè)用戶登錄到正確的網(wǎng)頁上,查詢當(dāng)前賬戶的余額,系統(tǒng)通過Account.php? user Name=’test’字符串的形式,向應(yīng)用程序提交查詢語句,應(yīng)用程序則通過構(gòu)造語句:SELECT*FROM Accounts WHERE userName=’test’,返回到用戶賬戶信息。如果非法侵入用戶將這個(gè)字符串輸入改變?yōu)椋篈ccount.php?userName=’test’OR 1=’1’,那么,應(yīng)用程序構(gòu)造的語句則會(huì)相應(yīng)改變?yōu)椋篠ELECT*FROM Accounts WHERE userName=’test’ OR 1=’1’,這樣,數(shù)據(jù)庫會(huì)返回所有用戶的賬戶信息,造成安全威脅。

(2)SQL注釋符攻擊。由于SQL語言涵蓋有注釋符,它們分別為:① # 用于注釋符號(hào)后面的本行內(nèi)容;② — 與#類似,在它的后面添加一個(gè)空格用于注釋;③ /*…*/ 這是用于注釋符號(hào)中間的內(nèi)容。以用戶的注冊(cè)系統(tǒng)為例,用戶等級(jí)采用userlevel表示;管理者采用1表示;普通用戶用2表示,其應(yīng)用程序的代碼可以編譯如下:

如果在上述輸入程序中,在email處輸入:netsh@163.com’,’1’)#,那么,這個(gè)SQL語句就會(huì)相應(yīng)改變?yōu)椋?/p>

INSERT INTO members VALUES

(’youid’,’youname’,’youpa ss’,’netsh@163.com’,’1’)#,’2’)

那么,插入的用戶等級(jí)就會(huì)發(fā)生改變,轉(zhuǎn)變?yōu)楣芾韱T等級(jí),形成攻擊威脅。

(3)添加補(bǔ)充語句。在下述的語句之中:SELECT*FROM users WHERE username=’admin’,這個(gè)’admin’是用戶輸入語句,而如果將其更改為admin’:DELETE FROM users’,那么,SQL語句就會(huì)變?yōu)椋篠ELECT*FROM users WHERE;username=’admin’;DELETE FROM users”,造成惡意的攻擊和破壞。

2.當(dāng)前SQL注入防御技術(shù)分析

由于SQL注入攻擊是由于數(shù)據(jù)庫漏洞而導(dǎo)致的,因而,需要對(duì)數(shù)據(jù)庫漏洞進(jìn)行修補(bǔ),當(dāng)前可以從兩個(gè)方面對(duì)SQL注入攻擊進(jìn)行防御和檢測。

2.1 代碼層防御

這是通過對(duì)預(yù)先設(shè)定好的敏感字符進(jìn)行過濾,屏蔽出錯(cuò)的信息,并使用SQL參數(shù)查詢方式,隔離執(zhí)行代碼和數(shù)據(jù),有效防止通過用戶對(duì)語句進(jìn)行惡意的更改。現(xiàn)在研究較多的是對(duì)數(shù)據(jù)的合法性檢測,大體是利用算法得到合法的結(jié)構(gòu)或輸入類型,再與Web應(yīng)用程序的輸入進(jìn)行比對(duì),比對(duì)匹配則為合法,比對(duì)不匹配即為非法侵入。它們主要有:(1)基于序列比對(duì)的SQL攻擊檢測。它是利用Needleman-Wunsch算法,進(jìn)行用戶輸入SQL語句結(jié)構(gòu)和類型的比對(duì),從而判斷其是否受到SQL注入攻擊。(2)防SQL注入攻擊的數(shù)據(jù)庫驅(qū)動(dòng)。它是通過服務(wù)器上的Web程序、后臺(tái)數(shù)據(jù)庫進(jìn)行連接驅(qū)動(dòng),去掉執(zhí)行語句中的字符串,經(jīng)由執(zhí)行語句路徑,由hash函數(shù)得到id并加以保存,以檢測是否受到SQL注入攻擊。(3)通過指令集隨機(jī)化的SQL注入防御。它是對(duì)SQL語句進(jìn)行改動(dòng),在其后加上密鑰,根據(jù)密鑰判定SQL語句是否受到注入攻擊。

2.2 平臺(tái)層防御

這是對(duì)平臺(tái)層進(jìn)行優(yōu)化處理或配置進(jìn)行更改,如:Web應(yīng)用防火墻、數(shù)據(jù)庫防火墻、應(yīng)用數(shù)據(jù)的鎖定等,這種策略可以減輕SQL注入攻擊,然而,由于它無法替代安全代碼的編寫,因而與安全代碼之間是互補(bǔ)的關(guān)系。

3.基于序列比對(duì)的SQL注入攻擊檢測分析

這種方法是利用改進(jìn)的序列比對(duì)算法——Needleman-Wunsch算法,對(duì)用戶的實(shí)際輸入進(jìn)行比對(duì),通過對(duì)輸入語句的結(jié)構(gòu)和類型加以判定,確認(rèn)和檢測其是否受到SQL注入攻擊。

3.1 改進(jìn)的NNeedleman-Wunsch算法

這種全局比對(duì)算法主要是考慮序列的整體,它利用整體相似度最大化的原則,對(duì)兩個(gè)序列進(jìn)行比對(duì),對(duì)于不等長度的序列,需要去除一些殘基的方法加以處理,或者采用另一序列進(jìn)行空位插入處理。

這種算法是基于DNA和RNA序列比對(duì)發(fā)展而來的,對(duì)算法的回溯過程進(jìn)行了改進(jìn),如果用戶輸入不包含惡意的代碼,那么,字符串則一定可以與目標(biāo)字符串相匹配,并且可以填充空位的結(jié)構(gòu)和值。

3.2 判定SQL注入攻擊檢測結(jié)果

基于序列比對(duì)的SQL注入攻擊檢測方法,可以檢測兩種狀況:

這種算法的檢測流程如下圖所示:

該算法的比對(duì)過程如下圖所示:

目標(biāo)T:y1y2……yj yj+1……ym-1 ym

‖‖ ‖‖‖‖ ‖‖

模式P:x1x2……xi xi+1….xi-1 xi

結(jié)果R:x1x2……xi xi+1__xi-1____xi

上述算法可以對(duì)數(shù)據(jù)庫進(jìn)行正確性測試,包括對(duì)字符串型、數(shù)字型的數(shù)據(jù)庫進(jìn)行序列比對(duì),從而檢測出以SQL注入攻擊技術(shù)為基礎(chǔ)的攻擊語句。

4.結(jié)束語

綜上所述,基于序列比對(duì)的SQL注入攻擊檢測方法,是運(yùn)用了改進(jìn)的序列比對(duì)算法——Needleman-Wunsch算法,對(duì)用戶的實(shí)際輸入進(jìn)行比對(duì),進(jìn)而判定出輸入語句的結(jié)構(gòu)和類型,它無須外部數(shù)據(jù)庫的支持,可以基于序列比對(duì)方法,快速高效地監(jiān)測出SQL注入攻擊行為,它不依賴于任何學(xué)習(xí)算法的運(yùn)算精度限制,可以有效地加以應(yīng)用和發(fā)揮。

[1] 沈琳. 網(wǎng)絡(luò)攻擊特征提取算法在序列比對(duì)中的運(yùn)用分析[J]. 計(jì)算機(jī)光盤軟件與應(yīng)用. 2014(15)

猜你喜歡
字符串語句應(yīng)用程序
重點(diǎn):語句銜接
刪除Win10中自帶的應(yīng)用程序
精彩語句
一種新的基于對(duì)稱性的字符串相似性處理算法
如何搞定語句銜接題
依據(jù)字符串匹配的中文分詞模型研究
關(guān)閉應(yīng)用程序更新提醒
電腦迷(2012年15期)2012-04-29 17:09:47
一種針對(duì)Java中字符串的內(nèi)存管理方案
三星電子將開設(shè)應(yīng)用程序下載商店
作文語句實(shí)錄
嘉定区| 临夏县| 呼伦贝尔市| 乌什县| 新宁县| 宁化县| 阜康市| 湘乡市| 扎囊县| 海宁市| 象州县| 哈巴河县| 潮州市| 吕梁市| 松溪县| 临邑县| 海南省| 剑川县| 布尔津县| 清徐县| 昌宁县| 乐昌市| 罗源县| 兴隆县| 房山区| 墨脱县| 凭祥市| 奉贤区| 静海县| 曲靖市| 长沙县| 宽甸| 安阳县| 宁强县| 都昌县| 清远市| 景泰县| 桐庐县| 治县。| 桓台县| 涡阳县|