摘 要:伴隨信息技術(shù)的發(fā)展,網(wǎng)絡(luò)的應(yīng)用日益廣泛,由于網(wǎng)絡(luò)風(fēng)險的無處不在,人們對網(wǎng)絡(luò)安全的重視程度也越來越高。目前,針對Web應(yīng)用系統(tǒng)的攻擊已成為網(wǎng)絡(luò)安全攻防新焦點,而在Web應(yīng)用系統(tǒng)的所有攻擊中,SQL注入攻擊則成為Web應(yīng)用系統(tǒng)的嚴(yán)重安全隱患。為了給網(wǎng)絡(luò)用戶提供一個安全的網(wǎng)絡(luò)環(huán)境,我們有必要對SQL注入攻擊進行了解,并積極做好防范準(zhǔn)備。
關(guān)鍵詞:SQL注入攻擊;檢測技術(shù):防范技術(shù)
中圖分類號:TP393.08
1 SQL注入攻擊簡介
1.1 SQL注入概念
SQL注入就是利用現(xiàn)有應(yīng)用程序,將(惡意)的SQL命令注入到后臺數(shù)據(jù)庫引擎執(zhí)行的能力,這是SQL注入的標(biāo)準(zhǔn)釋義。SQL注入(SQL Injection)技術(shù)在國外最早出現(xiàn)在1999年,我國在2002年后開始大量出現(xiàn)。隨著B/S模式應(yīng)用開發(fā)的發(fā)展,技術(shù)開發(fā)人員采用SQL注入模式來編寫應(yīng)用程序越來越多,但是很多程序員由于經(jīng)驗問題或者疏忽,在編寫代碼的過程中,對于用戶的輸入數(shù)據(jù)沒有進行合法性的判斷,使程序出現(xiàn)安全隱患[1-3]。
1.2 SQL注入攻擊的過程
SQL注入利用的是正常的HTTP服務(wù)端口,表面上看來和正常的web訪問沒有區(qū)別,隱蔽性極強,不易被發(fā)現(xiàn)。SQL注入攻擊可以簡單分為五步進行操作。(1)事先判斷在該Web開發(fā)環(huán)境中是否容易進行SQL注入。例如,僅僅是對網(wǎng)頁的靜態(tài)訪問,則不存在SQL注入的問題,只有對后臺數(shù)據(jù)庫進行了動態(tài)的查詢訪問才會有可能帶來SQL注入;(2)當(dāng)可以進行SQL注入時,要對SQL注入點進行尋找,通過輸入語句,根據(jù)反悔的信息來判斷注入點,對一些注入漏洞進行查找;(3)是通過對用戶名和密碼進行猜解、破譯。在數(shù)據(jù)庫的建立是有規(guī)律的,可以通過網(wǎng)上的注入工具對表名、字段名、用戶名定義和密碼進行查找,并借助破解軟件輕易獲得用戶名和密碼;(4)對Web后臺進行突破,尋找SQL注入入口。一般情況下,Web的管理后臺是不向普通用戶開放,但是可以用地址掃描工具對后臺登陸的路徑依次進行掃描,可以找到后臺入口;(5)通過入侵和暴力破壞的方式。當(dāng)入侵到系統(tǒng)內(nèi)部,就可以肆意的進行網(wǎng)頁篡改、修改、復(fù)雜信息,對數(shù)據(jù)庫服務(wù)器造成破壞[4]。
2 SQL注入攻擊的特點和危害
2.1 SQL注入攻擊的特點
SQL注入攻擊已成為Web應(yīng)用系統(tǒng)主要安全隱患,其安全風(fēng)險已經(jīng)高于緩沖區(qū)溢出漏洞,為此我們有必要對SQL注入攻擊的特點進行了解:(1)攻擊范圍廣泛。SQL注入攻擊利用的是SQL語法,在應(yīng)用程序中沒有對SQL語句強調(diào)合法性、嚴(yán)謹(jǐn)性,則會帶來SQL注入漏洞,當(dāng)前的系統(tǒng)主要采用的是JAVA、PHP、Perl語言與SQL、DB2、Sybase、Oracle數(shù)據(jù)庫相結(jié)合的,在這些系統(tǒng)中均存在SQL注入漏洞;(2)SQL的注入攻擊技術(shù)簡單。當(dāng)SQL技術(shù)出現(xiàn)后,就出現(xiàn)了多款SQL注入工具,這些工具都能實現(xiàn)將SQL注入到網(wǎng)站中或者對應(yīng)用程序進行攻擊破壞;(3)SQL注入危害大。SQL注入可以使網(wǎng)頁的內(nèi)容進行更改,嚴(yán)重的能夠盜竊公司的重要數(shù)據(jù),對企業(yè)造成經(jīng)濟損失[5]。
2.2 SQL注入攻擊的主要危害
在計算機技術(shù)高速發(fā)展的今天,越來越讓人們頭疼的是面臨越來越“變態(tài)”和復(fù)雜的威脅網(wǎng)站技術(shù),通過在網(wǎng)絡(luò)上進行各種有意和無意的破壞來達到信息的竊取、寬帶的占用和宣傳某些信息等。在進行這些活動時,是在未經(jīng)用戶允許的情況下進入用戶執(zhí)行的程序中或者硬盤上,在不知不覺中進行了一系列的危害操作。
SQL注入攻擊的主要危害主要包括:非法讀取、篡改、添加、刪除數(shù)據(jù)庫中的數(shù)據(jù);盜取用戶的各類敏感信息,獲取利益;通過修改數(shù)據(jù)庫來修改網(wǎng)頁上的內(nèi)容;私自添加或刪除賬號;注入木馬;等等。
由于SQL注入攻擊一般利用的是利用的是SQL語法,這使得于所有基于SQL語言標(biāo)準(zhǔn)的數(shù)據(jù)庫軟件,如SQL Server,Oracle,MySQL,DB2等都有可能受到攻擊,并且攻擊的發(fā)生和Web編程語言本身也無關(guān),如ASP、JSP、PHP,在理論上都無法完全幸免。
SQL注入攻擊的危險是比較大的。很多其他的攻擊,如DoS等,可能通過防火墻等手段進行阻攔,但是而對于SQL注入攻擊,由于注入訪問是通過正常用戶端進行的,所以普通防火墻對此不會發(fā)出警示,一般只能通過程序來控制,而SQL攻擊一般可以直接訪問數(shù)據(jù)庫進而甚至能夠獲得數(shù)據(jù)庫所在的服務(wù)器的訪問權(quán),因此,危害相當(dāng)嚴(yán)重[6]。
3 SQL注入攻擊的檢測與防范
為了給個體、企業(yè)甚至是國家提供一個安全的網(wǎng)絡(luò)環(huán)境,我們有必要對Web應(yīng)用系統(tǒng)存在重大安全威脅的SQL注入攻擊進行檢測并采取防范的對策。
3.1 對SQL注入攻擊的檢查方法
SQL注入攻擊的檢查方法主要分為入侵前和入侵后,對于入侵前檢查,既可以用手動的方式也可以用軟件工具的方式來進行檢測,起到的是預(yù)防作用;而對于入侵后的檢查主要是對日志的檢查,當(dāng)有SQL注入攻擊,會在IIS日志中留下無法抹去的記錄。下面對目前常用的SQL注入攻擊檢查方式進行分析。
(1)數(shù)據(jù)庫檢查。通過軟件工具進行SQL注入攻擊會在數(shù)據(jù)庫中形成一些臨時文件,在檢查時注重這些文件表的內(nèi)容,判斷是否發(fā)生過SQL注入攻擊;(2)IIS日志檢查。在應(yīng)用程序執(zhí)行過程中,如果啟用了日志記錄,當(dāng)SQL注入攻擊到應(yīng)用程序中,則會產(chǎn)生大量的日志文件,是平時日志數(shù)量的幾十倍甚至上百倍。所以,開啟日志記錄的Web應(yīng)用程序中,通過查看日志文件的大小和內(nèi)容就可以判斷是否發(fā)生過SQL注入攻擊;(3)其它相關(guān)信息判斷。入侵者采用SQL注入攻擊方式進入到應(yīng)用程序中或者遠端的硬盤中,是帶有一定的目的性,所以,可以通過檢查管理員的賬號、最近操作的文件信息和其他相關(guān)信息來判斷是否發(fā)生過SQL注入攻擊。
3.2 一般的SQL注入攻擊防范方法
目前,SQL注入攻擊的防范方法有很多,例如采用管理權(quán)限最小化的設(shè)置形式;對于重要的數(shù)據(jù)采取非常規(guī)加密的形式,或者在程序設(shè)計中采用口令加密的形式;在系統(tǒng)設(shè)計時進行合法性的檢查;修改、替換敏感字符和字符串信息;在SQL語句設(shè)置中,采用SQL變量,盡量少使用字串連接的方式;修改或者刪除Web服務(wù)器上默認(rèn)的危險口令等。
4 結(jié)束語
現(xiàn)代社會網(wǎng)絡(luò)日益被人們所使用并開始形成了依賴,大到國家,小到個人,都需要網(wǎng)絡(luò)給予生活、工作提供更多的輔助。為了實現(xiàn)網(wǎng)絡(luò)的安全,我們有必要對現(xiàn)存的網(wǎng)絡(luò)安全隱患尤其是SQL注入攻擊進行了解,并積極采取辦法對其進行檢測并開展防范工作,以便更好地保護網(wǎng)絡(luò)用戶的信息安全甚至是國家的信息安全。
參考文獻:
[1]陳小兵,張漢煜,駱力明.SQL注入攻擊及其防范檢測技術(shù)研究[J].計算機工程與應(yīng)用,2007(11).
[2]劉帥.SQL注入攻擊及其防范檢測技術(shù)的研究[J].電腦知識與技術(shù),2009(28).
[3]齊林,王靜云,蔡凌云.SQL注入攻擊檢測與防御研究[J].河北科技大學(xué)學(xué)報,2012(06).
[4]戴卓臣,陸江東.SQL注入攻擊及其防范措施分析[J].價值工程,2012(21).
[5]尹宏飛.SQL注入攻擊及防御技術(shù)的研究[J].智能計算機與應(yīng)用,2013(01).
[6]楊玉龍,彭長根,周洲.基于同態(tài)加密的防止SQL注入攻擊解決方案[J].信息網(wǎng)絡(luò)安全,2014(01).
作者單位:吉林省地方稅務(wù)局,長春 130022