國網宜昌供電公司信息通信分公司 李 楊
國網宜昌供電公司客戶服務中心計量室 周婧姝
Web頁面中SQL注入攻擊的原理、過程以及預防對策
國網宜昌供電公司信息通信分公司 李 楊
國網宜昌供電公司客戶服務中心計量室 周婧姝
SQL注入攻擊屬于一種數(shù)據庫安全攻擊手段,該攻擊手段是從正常的WWWW端口進入數(shù)據庫的,與常規(guī)Web頁面訪問幾乎一致,所以很難被數(shù)據安全系統(tǒng)發(fā)現(xiàn),具有較強的隱蔽性。為了提高數(shù)據庫的安全系數(shù),就需要針對SQL注入攻擊采取有效的預防措施。文章對SQL注入攻擊原理及過程進行了分析,并提出了有效的預防對策,對構建穩(wěn)定、安全的網絡環(huán)境具有重要意義。
Web頁面;SQL注入攻擊;原理;過程;預防對策
從當前應用程序編寫使用最為廣泛的網絡結構模式為B/S,具有開發(fā)簡單、維護方便、使用快捷等眾多優(yōu)勢。但是,該網絡結構模式也具有較大的缺陷,程序員在編寫代碼的時候,往往會忽略掉對Web頁面所輸入數(shù)據合法性的判斷,為網絡不法分子留下了SQL注入攻擊路徑,嚴重威脅了數(shù)據庫安全,所以必須采取有效的預防對策來降低SQL注入攻擊發(fā)生概率。
造成Web頁面中SQL注入攻擊的最根本原因,是沒有對Web輸入數(shù)據的合法性進行有效判斷。根據SQL注入攻擊原理的不同,可以將其其分為三種攻擊方式,分別為登錄表單注入攻擊、修改Cookie內容注入攻擊以及盲目注入攻擊,下面對這三種攻擊方式的原理進行詳細分析。
1.1 登錄表單注入攻擊
攻擊者在登錄時將精心構造的惡意SQL語句偽裝進正常登陸數(shù)據內提交,此時系統(tǒng)與服務器防火墻并不能有效識別數(shù)據的合法性,所以服務器便會執(zhí)行修改后的惡意SQL語句,造成SQL注入攻擊,導致程序的實際運行結果發(fā)生了變化,與預期運行結果之間存在較大偏差,甚至會出現(xiàn)數(shù)據泄露與數(shù)據篡改現(xiàn)象,嚴重威脅了數(shù)據的安全性及完整性。
1.2 修改Cookie內容注入攻擊
Cookie是以文件形式存在于客戶端計算機中的,能夠生成Web日志,文件內容為狀態(tài)信息,對Web應用程序起到記錄作用,用戶可以根據自己需求,利用Cookie文件將Web應用程序狀態(tài)信息進行恢復。Cookie文件的存可以作為黑客入侵的載體,攻擊者在進入到客戶端計算機系統(tǒng)之后,可以隨意篡改Cookie文件內容,將攻擊指令輸入到狀態(tài)信息中,當用戶想利用Cookie文件恢復Web應用程序狀態(tài)信息,在構造SQL查詢語句時,Web應用程序便會對攻擊指令進行回應,進而造成Web頁面出現(xiàn)SQL注入攻擊現(xiàn)象[1]。
1.3 盲目注入攻擊
盲目注入攻擊是一種沒有明確目標的SQL注入攻擊方式,是利用SQL本身存在的漏洞來實現(xiàn)的。通過向服務器反復輸入數(shù)據,構造SQL查詢字串,服務器便會按照這些SQL字串運行,向客戶端傳遞錯誤信息,此時客戶端便會對服務器運行做出反饋。黑客通過對客戶端所得到的錯誤數(shù)據進行分析,從中提取有價值數(shù)據,通過多次測試、驗證,從數(shù)據庫中找出敏感程度較高的數(shù)據,進而找出SQL注入漏洞,進行SQL注入攻擊。
2.1 尋找SQL注入漏洞的鏈接
通常情況下,Web頁面都會存在外部鏈接,鏈接是以list. asp?id=的形式存在的,由鏈接形式可得,鏈接是調動SQL語句查詢數(shù)據庫所形成的,當鏈接后半段的參數(shù)沒有得到有效過濾,或者是沒有對輸入數(shù)據的合法性進行有效判斷時,便可能會出現(xiàn)SQL注入攻擊現(xiàn)象。借助于搜索引擎,黑客可以利用鏈接的這種特性,通過不斷嘗試找出漏洞鏈接。并且當使用統(tǒng)一資源定位符對網頁進行訪問時,如果需要對數(shù)據進行動態(tài)查詢,便很容易出現(xiàn)SQL注入漏洞鏈接[2]。
2.2 檢測SQL注入漏洞
在找到SQL注入漏洞的鏈接之后,通過多次輸入數(shù)據,依據瀏覽器反饋信息,對所得到的數(shù)據進行分析,從數(shù)據庫中找出敏感程度較高的數(shù)據,進而檢測到SQL注入漏洞。檢測SQL注入漏洞的方法,一般都是在連接末尾加入字符“或”,根據反饋得到的錯誤信息得到數(shù)據庫的具體類型,然后在鏈接末尾加入“and 1=1”和“and 1=2”,當前半段得到正?;貞?,后半段沒內容反饋,并返回上級操作,此時,Web網頁中就會存在SQL注入漏洞。
2.3 獲取表名以及字段
一般情況下,存儲在數(shù)據庫中的表名以及字段,都是按照一定的規(guī)律排布的,所以可以利用數(shù)據庫獲取表名以及字段。在檢測得到SQL注入漏洞后,黑客通過構造SQL字串,借助網上注入工具,在之前所得的的數(shù)據庫中進行查找,能夠從中獲取管理員的表名以及字段等有效信息,然后再利用這些信息,便可以破解出管理員密碼,獲取管理權限。
2.4 得到Web后臺管理入口
當攻擊者得到管理員密碼,通過身份驗證之后,便可以對用戶名以及用戶密碼進行破解,進而獲取用戶的私人信息及數(shù)據,實現(xiàn)入侵目的。黑客以管理員的身份通過構造SQL語句,使網站管理系統(tǒng)對語句進行回應,進而逐步得到用戶名以及用戶密碼,常用的語句形式如and 1=(select管理id from(select * from管理員表名where管理員id=1)where asc(mid(管理員賬號字段名,1,1))<100)。在獲取用戶名及用戶密碼之后,便可以得到Web后臺管理入口,進入到系統(tǒng)內部。
2.5 實施攻擊和破壞
黑客進入到網站系統(tǒng)內部之后,便可以進行隨意破壞,刪除、篡改用戶數(shù)據,添加廣告鏈接,上傳木馬病毒等,都是黑客常用破壞形式,同時還能進一步入侵整個服務器,對服務器造成嚴重破壞,最終完成Web頁面SQL注入攻擊。
SQL注入攻擊的概率較高,為了有效避免出現(xiàn)SQL注入攻擊事件,就需要采取科學、有效的預防對策。
3.1 加強對輸入參數(shù)及數(shù)據的判斷
有效過濾輸入參數(shù)以及正確判斷輸入數(shù)據,是避免出現(xiàn)SQL注入攻擊的有效方式。首先,要對字符型參數(shù)進行有效過濾,包括逗號、單引號、雙引號、分號等,當出現(xiàn)較多這類符號的時候,應該進行篩選、過濾,限制這類符號的輸入,同時,還需要根據參數(shù)的長度,對其合法性進行正確判斷。其次,是要對數(shù)據進行正確判斷,當數(shù)據中含有非法字符時,便不對這類數(shù)據進行響應。
3.2 設置數(shù)據庫及用戶表訪問權限
通過設置服務器數(shù)據庫訪問權限,能夠防止攻擊者進入到數(shù)據庫內部,對數(shù)據庫起到保護作用,可以有效降低SQL注入攻擊發(fā)生概率。在設置服務器數(shù)據庫訪問權限的時候,如果沒有特殊要求,不要讓Web頁面以超級管理員的身份與數(shù)據庫進行連接。在設置用戶表訪問權限時,僅僅授予管理員訪問權限,堅決不要授予管理員更新、插入等權限。
3.3 摒棄動態(tài)SQL字串
因為在對數(shù)據進行動態(tài)查詢時,發(fā)生SQL注入攻擊的概率是比較高的,所以為了降低SQL注入攻擊發(fā)生概率,則需要摒棄動態(tài)SQL字串,利用用戶存儲過程來實現(xiàn)對數(shù)據的訪問和操作。在這種系統(tǒng)模式下,用戶所提交的數(shù)據便不會再生成動態(tài)SQL語句,而是確確實實地作為參數(shù)傳遞給存儲過程,這樣一來,便會失去SQL注入攻擊路徑。
3.4 加強系統(tǒng)監(jiān)督及檢測
加強系統(tǒng)日常監(jiān)督與檢測,是預防SQL注入攻擊必不可少的重要措施。作為網站管理員要及時的打補丁并強化數(shù)據,禁用不必要的服務和功能,對數(shù)據庫活動進行監(jiān)視,利用工具或設備,對Web頁面中的攻擊行為進行檢測,及早預防。
在大數(shù)據以及云計算背景下,網絡計算機技術迎來了新的發(fā)展機遇,但同時也面臨著更加嚴峻的挑戰(zhàn)。作為黑客最為常用的一種入侵手段,SQL注入攻擊對網絡安全以及網絡環(huán)境的穩(wěn)定性造成了嚴重威脅。為了構建安全、穩(wěn)定的網絡環(huán)境,就需要程序員了解Web頁面中SQL注入攻擊的原理和過程,并制定有效的預防對策,降低SQL注入攻擊發(fā)生概率。
[1]吳為團,鄭海燕,張銳麗.基于Web應用程序的SQL注入攻擊和防范[C].中國通信學會學術年會,2015.
[2]馬俊,段興林.Web應用系統(tǒng)中SQL注入的分析與預防[J].信息技術,2015(8):71-73.