摘 要:當(dāng)前計(jì)算機(jī)網(wǎng)絡(luò)不斷的發(fā)展,伴隨而來(lái)的就是計(jì)算機(jī)網(wǎng)絡(luò)結(jié)構(gòu)的復(fù)雜化。網(wǎng)絡(luò)安全已經(jīng)擺在我們每個(gè)計(jì)算機(jī)用戶的面前,各計(jì)算機(jī)用戶都不斷的采用很多網(wǎng)絡(luò)安全的措施,加強(qiáng)網(wǎng)絡(luò)安全防范.但同時(shí),網(wǎng)絡(luò)非法攻擊活動(dòng)也在不斷地更換各種攻擊方式方法,尋找最薄弱環(huán)節(jié),伺機(jī)非法入侵,所以計(jì)算機(jī)網(wǎng)絡(luò)安全管理就成為了網(wǎng)絡(luò)研究的重點(diǎn),特別是SQL注入攻擊這種常見(jiàn)的,多發(fā)的網(wǎng)絡(luò)攻擊成為研究當(dāng)下網(wǎng)絡(luò)安全管理的焦點(diǎn)。
關(guān)鍵詞:網(wǎng)絡(luò)安全;SQL注入攻擊;防范get注入;防范post注入;防范cookies注入
中圖分類號(hào):TP393.18
1 SQL注入攻擊相關(guān)概念
1.1 攻擊簡(jiǎn)介
SQL注入通常是從萬(wàn)維網(wǎng)端口開(kāi)始訪問(wèn),一般給我們基本的web訪問(wèn)沒(méi)有太大的差別,因此常規(guī)情況下,防火墻都不會(huì)對(duì)SQL注入發(fā)出警報(bào),如果用戶沒(méi)有查看ⅡS日志的習(xí)慣,極有可能遭受長(zhǎng)時(shí)間的攻擊都不知道。
1.2 SQL注入攻擊原理
要闡述SQL注入攻擊原理我們以登錄驗(yàn)證中的模塊為例,說(shuō)明SQL注入攻擊的實(shí)現(xiàn)方法。SQL注入攻擊往往是SQL語(yǔ)法中的一部分,通過(guò)執(zhí)行SQL語(yǔ)句而執(zhí)行入侵者的想要的操作。在登陸模塊中,一般有用戶名(username)和密碼(password)兩個(gè)參數(shù),其原理是通過(guò)查找user表中的用戶名(username)和密碼(password)的結(jié)果來(lái)進(jìn)行授權(quán)訪問(wèn),典型的SQL查詢語(yǔ)句為:
Select*from users where username='admin' and password='smith’
假如給username和password賦值“admin'or 1=1--”和“aaa”則SQL腳本解釋器中的程序代碼就變成:
select*from users where username=’admin’ or 1=1—and password=’aaa’
通過(guò)上面代碼就可以在輸入?yún)?shù)中構(gòu)建SQL語(yǔ)法,且可以刪除數(shù)據(jù)庫(kù)中的表,查詢、插入和更新數(shù)據(jù)庫(kù)中的數(shù)據(jù)等危險(xiǎn)操作,這就是SQL注入攻擊的主要原理
1.3 入侵操作步驟
(1)找一個(gè)類似http://xxx.xxx.xxx/abc.asp?p=YY的網(wǎng)站。
(2)在http://xxx.xxx.xxx/abc.asp?p=YY后面追加“and 1=1”,并訪問(wèn)該網(wǎng)址即http://xxx.xxx.xxx/abc.asp?p=YY and 1=1應(yīng)該與訪問(wèn)原地址得到的結(jié)果相同。
(3)在http://xxx.xxx.xxx/abc.asp?p=YY后面追加“and 1=2”,并訪問(wèn)該網(wǎng)址即
http://xxx.xxx.xxx/abc.asp?p=YY and 1=2應(yīng)該與訪問(wèn)原地址得到的結(jié)果不同,并提示數(shù)據(jù)庫(kù)錯(cuò)誤。
((2),(3)同時(shí)滿足則此網(wǎng)站必定存在SQL漏洞。)
(4)訪問(wèn)http://xxx.xxx.xxx/abc.asp?p=YY and exists (select*from網(wǎng)站數(shù)據(jù)庫(kù)常用表段名)網(wǎng)站數(shù)據(jù)庫(kù)常用表段名:admin users administrator等,如果進(jìn)入的網(wǎng)頁(yè)像步驟二一樣,是正常網(wǎng)頁(yè),證明存在該表段名。找尋該SQL數(shù)據(jù)庫(kù)使用的表名,進(jìn)而尋找網(wǎng)站的管理員名、密碼等信息。我們可以通過(guò)Socket編程,把常用表段名寫成一個(gè)鏈表,通過(guò)Socket編程遍歷一邊,并找到可入侵點(diǎn)。
(5)訪問(wèn)http://xxx.xxx.xxx/abc.asp?p=YY and exists select*from第四步找到的可入侵表名。
2 如何防止SQL注入
2.1 永遠(yuǎn)不要信任用戶的輸入
對(duì)用戶的輸入進(jìn)行校驗(yàn),可以通過(guò)正則表達(dá)式,或限制長(zhǎng)度;對(duì)單引號(hào)和雙\"-\"進(jìn)行轉(zhuǎn)換等。
在構(gòu)造動(dòng)態(tài)SQL語(yǔ)句時(shí),一定要使用類安全(type-safe)的參數(shù)加碼機(jī)制。大多數(shù)的數(shù)據(jù)API,包括ADO和ADO.NET,有這樣的支持,允許你指定所提供的參數(shù)的確切類型(譬如,字符串,整數(shù),日期等),可以保證這些參數(shù)被恰當(dāng)?shù)豦scaped/encoded了,來(lái)避免黑客利用它們。一定要從始到終地使用這些特性。
例如,在ADO.NET里對(duì)動(dòng)態(tài)SQL,你可以像下面這樣重寫上述的語(yǔ)句,使之安全:Dim SSN as String=Request.QueryString(\"SSN\")
Dim cmd As new SqlCommand(\"SELECT au_lname,au_fname FROM authors WHERE au_id =@au_id\")
Dim param=new SqlParameter(\"au_id\",SqlDbType.VarChar)param.Value=SSN
cmd.Parameters.Add(param)
2.2 當(dāng)然已可以通過(guò)防范get注入防范post注入
防范cookies注入等措施來(lái)防止SQL注入。具體的實(shí)現(xiàn)代碼如下:
防范post注入
If Request.QueryString<>””
Then StopInjection(Request.QueryString)
防范post注入
If Request.Form<>””Then StopInjection(Request.Form)
防范cookies 注入
If Request.Cookies<>””Then StopInjection(If Request.Cookies)
2.3 預(yù)防工具
Pangolin(中文譯名為穿山甲)一款幫助滲透測(cè)試人員進(jìn)行Sql注入測(cè)試的安全工具,是深圳宇造諾賽科技有限公司(Nosec)旗下的網(wǎng)站安全測(cè)試產(chǎn)品之一。通過(guò)該軟件就能夠經(jīng)過(guò)很簡(jiǎn)單的操作,達(dá)到最顯著的防范及測(cè)試SQL攻擊的效果。
3 結(jié)束語(yǔ)
本文闡述了防止SQL注入攻擊的基本原理和防御方法來(lái)管理我們?cè)絹?lái)越復(fù)雜的計(jì)算機(jī)網(wǎng)絡(luò)安全,使得繁瑣的網(wǎng)絡(luò)管理變得簡(jiǎn)單,安全,可靠,使網(wǎng)絡(luò)管理系統(tǒng)得以高效地運(yùn)行??傊乐筍QL注入攻擊經(jīng)過(guò)短短的十多年發(fā)展,已給計(jì)算機(jī)網(wǎng)絡(luò)安全帶來(lái)了一些可喜的變化,人們的生活已經(jīng)和網(wǎng)絡(luò)密不可分,隨著網(wǎng)絡(luò)規(guī)模不斷擴(kuò)大,人們的思想不斷革新,防止SQL注入攻擊技術(shù)會(huì)越來(lái)越完善,迎來(lái)新的發(fā)展和長(zhǎng)足的進(jìn)步。
參考文獻(xiàn):
[1]林常君.基于web的網(wǎng)絡(luò)設(shè)備管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].科技信息,2011(01).
[2]David Zeltserman.SNMPv3與網(wǎng)絡(luò)管理[M].北京:人民郵電出版社,2000.
[3]孟洛明.現(xiàn)代網(wǎng)絡(luò)管理技術(shù)[M].北京:郵電大學(xué)出版社,2000.
[4]薩師煊,王珊.數(shù)據(jù)庫(kù)系統(tǒng)概論[M].北京:高等教育出版社(第三版).
[5]鐘增勝.注入漏洞的分析及防范[J].重慶工商大學(xué)學(xué)報(bào)(自然科學(xué)版).
[6]蔣繼婭,劉彤,王樹(shù)威.Web應(yīng)用中的SQL注入攻擊與防護(hù)方案研究[J].計(jì)算機(jī)安全,2008(05).
[7]王功明,吳華瑞,趙春江.正則表達(dá)式在電子政務(wù)客戶端校驗(yàn)中的應(yīng)用[J].計(jì)算機(jī)工程,2007(09).
[8]周敬利,王曉鋒,余勝生.一種新的反SQL注入策略的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)科學(xué),2006(11).
作者簡(jiǎn)介:范科鋒(1975.10-),男,四川納溪人,碩士,助教,研究方向:計(jì)算機(jī)應(yīng)用。
作者單位:四川化工職業(yè)技術(shù)學(xué)院圖文信息中心,四川瀘州 646005