◆徐 茂
(萊蕪市公安消防支隊 山東 271100)
淺析面向SQL數(shù)據(jù)庫注入攻擊的Java Web防御措施
◆徐 茂
(萊蕪市公安消防支隊 山東 271100)
隨著信息時代的發(fā)展以及互聯(lián)網(wǎng)計算機技術(shù)的普及,網(wǎng)絡(luò)安全逐漸成為了社會關(guān)注的重點?,F(xiàn)階段,各行各業(yè)的信息化建設(shè)使得網(wǎng)絡(luò)系統(tǒng)管理的地位日益提升,與企業(yè)相關(guān)的各種數(shù)據(jù)信息也被儲存于強大的網(wǎng)絡(luò)數(shù)據(jù)庫中。然而這些數(shù)據(jù)庫往往是網(wǎng)絡(luò)黑客的入侵目標,由此可見信息安全受到了較大的威脅。鑒于此,本文主要分析常見的網(wǎng)絡(luò)攻擊形式,即向SQL數(shù)據(jù)庫中注入攻擊,探討Java Web應(yīng)用過程中防御措施。
SQL數(shù)據(jù)庫;攻擊;Java Web應(yīng)用;防御措施
現(xiàn)階段,大部分的網(wǎng)頁存在較大的SQL數(shù)據(jù)庫注入漏洞。網(wǎng)絡(luò)黑客以數(shù)據(jù)庫的漏洞為突破口,憑借著自身擁有的較高計算機技術(shù),通過網(wǎng)絡(luò)服務(wù)器侵入到管理員的服務(wù)區(qū)域內(nèi),從而偷取相關(guān)的重要信息數(shù)據(jù)。在我國,這種網(wǎng)絡(luò)入侵,盜取資料信息的案例時有發(fā)生,嚴重威脅到了網(wǎng)絡(luò)信息的安全,違背了相關(guān)的法律法規(guī)和社會道德。因此,本文對Java Web應(yīng)用過程中防御措施的探討具有重要價值。
1.1 SQL數(shù)據(jù)庫注入攻擊后系統(tǒng)的內(nèi)部變化
在數(shù)據(jù)庫管理平臺系統(tǒng)內(nèi)存在客戶終端和數(shù)據(jù)終端,很多網(wǎng)絡(luò)黑客通過客戶終端輸入一些違反規(guī)定的SQL語句,當正常的SQL語句遇到違規(guī)語句時會產(chǎn)生一定的混亂,從而降低了數(shù)據(jù)庫系統(tǒng)信息的安全,由此便導(dǎo)致了SQL數(shù)據(jù)庫注入攻擊。當SQL數(shù)據(jù)庫注入攻擊以后,數(shù)據(jù)庫信息便面臨了較大的安全隱患,重要的數(shù)據(jù)信息很有可能被盜取。當攻擊者的目標不是數(shù)據(jù)庫中的信息數(shù)據(jù)時,很有可能威脅到系統(tǒng)服務(wù)器的安全,從而造成更大的損失[1]。
當網(wǎng)絡(luò)黑客入侵到管理者區(qū)域內(nèi)以后,便取得了一定的網(wǎng)絡(luò)信息控制權(quán),從而會安裝一些威脅信息安全的木馬病毒,使得眾多的網(wǎng)民信息安全受到威脅??梢姡琒QL數(shù)據(jù)庫注入攻擊以后,其危害領(lǐng)域與范圍是較大的,后果不堪設(shè)想。
1.2 結(jié)構(gòu)化查詢語言的特點
SQL是中文“結(jié)構(gòu)化查詢語言”的英文簡稱,這種語言模式可以為相關(guān)的數(shù)據(jù)庫管理編寫出一個功能較全的程序化軟件,其表達轉(zhuǎn)譯的過程主要通過SQL語句完成。SQL數(shù)據(jù)庫語言的功能主要表現(xiàn)在實現(xiàn)數(shù)據(jù)庫之間的信息交流,在接收指令和執(zhí)行操作的過程中主要以SQL語句指令為標準,從而保證在數(shù)據(jù)庫管理平臺發(fā)出指令時,數(shù)據(jù)系統(tǒng)作出相應(yīng)的反應(yīng)[2]。
SQL數(shù)據(jù)庫語言與關(guān)系型數(shù)據(jù)庫密切相關(guān),這也是一般關(guān)系型數(shù)據(jù)庫均使用SQL數(shù)據(jù)庫語言的重要原因。大部分關(guān)系型數(shù)據(jù)庫在使用SQL語句時,可以得到較好的程序表達,其在表達過程中受到其它數(shù)據(jù)庫的影響較小。
2.1 加強客戶端與服務(wù)端雙向檢測力度
一般情況下,在檢測數(shù)據(jù)庫的過程中,比較注重客戶端方面的檢測,服務(wù)端檢測力度不夠,相關(guān)的保護程序不完善。由此增加了網(wǎng)絡(luò)黑客侵入的機會,使得SQL數(shù)據(jù)庫注入攻擊的可能性增大。因此,為了降低網(wǎng)絡(luò)攻擊的概率,需要在客戶端和服務(wù)端分別進行檢測[3]。
客戶檢測過程中要注重對攻擊可能性的劃分以及攻擊危害性的規(guī)劃,對于不同程度的網(wǎng)絡(luò)攻擊,要控制好網(wǎng)絡(luò)流量,保證服務(wù)器的承載處于標準范圍內(nèi)。此外,隨著時代的發(fā)展以及現(xiàn)代技術(shù)的進步,網(wǎng)絡(luò)黑客的技術(shù)水平也越來越高,在實施網(wǎng)絡(luò)攻擊的過程中,會選擇避開客戶端直接攻擊系統(tǒng)服務(wù)器。由此可見,加強服務(wù)端檢測力度是十分必要的。
服務(wù)器在檢測過程中要對信息保持敏感的嗅覺,即任何形式的可疑信息均要實施抵制,并且進行強制性的停止信息操作。為了保證服務(wù)端與客戶端的統(tǒng)一性,在服務(wù)端出現(xiàn)抵制其信息操作時,要將信息錯誤的提醒傳輸?shù)娇蛻舳?,從而保證可以及時的應(yīng)對攻擊[4]。
2.2 完善數(shù)據(jù)庫基本配置,實施定期更新,保證數(shù)據(jù)安全
為了保證數(shù)據(jù)的安全性,需要完善數(shù)據(jù)庫的基本配置,定期更新數(shù)據(jù)庫,并實施最小權(quán)利法則標準。軟件安裝過程中會存在一些賬號信息和相關(guān)的權(quán)限提醒,為了使得數(shù)據(jù)庫的基本配置,即相關(guān)軟件的安全性,需要及時的將與賬戶信息安全有關(guān)的信息刪除掉,從而避免形成網(wǎng)絡(luò)黑客注入漏洞。
當數(shù)據(jù)庫出現(xiàn)攻擊現(xiàn)象以后,系統(tǒng)便感知了內(nèi)部存在的漏洞,為了避免網(wǎng)絡(luò)攻擊的連發(fā)性,官方會提供一些數(shù)據(jù)庫更新補丁,從而填補系統(tǒng)漏洞。數(shù)據(jù)相關(guān)系統(tǒng)在接收更新提醒以后,要進行及時的更新操作,從而提高數(shù)據(jù)安全。為了加強對系統(tǒng)數(shù)據(jù)安全性的防范,官方系統(tǒng)可以實施定期更新機制,從而防患于未然。
Java Web應(yīng)用程序與數(shù)據(jù)庫之間只存在特定的賬戶權(quán)限,通過這種唯一性的設(shè)置可以保證在用戶完成相關(guān)操作以后,網(wǎng)絡(luò)黑客不會借助其它形式的軟件進行再次登錄,從而可以保證數(shù)據(jù)庫不會被其它惡意軟件所攻擊[5]。
2.3 通過對數(shù)據(jù)庫實施編碼字符防范,保證內(nèi)部深層次加護效果
編碼字符防范可以實現(xiàn)對數(shù)據(jù)庫的深層次防護,編碼字符防范的實質(zhì)是指在Java Web應(yīng)用程序?qū)嵤┎僮鞯倪^程中只能識別出自身設(shè)置的編碼,在輸送過程中會通過既定的編碼形成一定的系統(tǒng)識別語句。在實現(xiàn)數(shù)據(jù)輸入的過程中,系統(tǒng)會將數(shù)據(jù)以編碼函數(shù)的形式完成到另外一組預(yù)定編碼字符中的輸入,從而不給網(wǎng)絡(luò)黑客留下追蹤編碼的機會。
在實施編碼字符防范的過程中存在一個較大的問題,即網(wǎng)絡(luò)黑客的攻擊手段也是通過一定的代碼破譯形式。雖然編碼字符在系統(tǒng)實施編制的過程中會表現(xiàn)出一定的復(fù)雜性,但是與攻擊手段相比,顯然還存在一定的差距。函數(shù)編碼雖然可以實現(xiàn)對數(shù)據(jù)原有編碼的替換,增加編碼破譯的難度,但是在系統(tǒng)設(shè)計編碼字符防范的過程中,依然要注意加強編碼函數(shù)的復(fù)雜性,從而增加攻擊者入侵的難度[6]。
2.4 建立SQL數(shù)據(jù)庫注入防范系統(tǒng),確保對接受信息的準確判斷
為了加強對SQL數(shù)據(jù)庫的保護,可以選擇在客戶端與服務(wù)端中間部位設(shè)置一個區(qū)別于一般防范系統(tǒng)的數(shù)據(jù)庫注入防范系統(tǒng),即SQL數(shù)據(jù)庫注入防范系統(tǒng)是獨立于服務(wù)器系統(tǒng)本身的特殊系統(tǒng)。SQL數(shù)據(jù)庫注入防范系統(tǒng)的設(shè)置目標主要是了抵制病毒的二次入侵,在數(shù)據(jù)完成傳輸之前將其分解。
一般情況下,網(wǎng)絡(luò)系統(tǒng)在完成數(shù)據(jù)傳輸?shù)倪^程中需要遵循一般的HTTP協(xié)議,協(xié)議內(nèi)設(shè)置了基本的數(shù)據(jù)傳輸請求的格式以及服務(wù)器發(fā)生響應(yīng)的對應(yīng)標準,即只有在符合HTTP協(xié)議的基礎(chǔ)上,網(wǎng)絡(luò)系統(tǒng)才會完成傳輸工作。SQL數(shù)據(jù)庫注入防范系統(tǒng)的功能主要為了分析從客戶端傳入的信息規(guī)范性,將HTTP協(xié)議內(nèi)的傳輸報告內(nèi)容承包,并加以分析和處理,從而保證系統(tǒng)響應(yīng)的安全性。
在實現(xiàn)數(shù)據(jù)傳輸?shù)倪^程SQL數(shù)據(jù)庫注入防范系統(tǒng)中包含了解析系統(tǒng)、解碼器和語句判斷系統(tǒng),即首先接受到客戶端傳入的信息請求,將這些信息送入解析系統(tǒng)分析,解析系統(tǒng)主要是對信息的深層分析,從而得到用戶的輸入部分。在得到用戶輸入信息以后,將其輸送到解碼器內(nèi),解碼器的功能主要是實現(xiàn)不同編碼字符的統(tǒng)一轉(zhuǎn)化,即使得輸入信息轉(zhuǎn)化成統(tǒng)一的語句,也可以稱之為標準語句,這些標準語句的轉(zhuǎn)化一般可以與客戶輸入信息保持一致[7]。
將標準語句送入到判斷系統(tǒng)執(zhí)行語句的判斷,在判斷系統(tǒng)沒有顯示異常時,可以將其運輸?shù)絁ava Web應(yīng)用服務(wù)器中運行。當判斷系統(tǒng)出現(xiàn)異常提醒時,說明語句信息存在問題,此時需要及時的抵制,避免其進入到Java Web應(yīng)用服務(wù)器內(nèi)部。由此可見,SQL數(shù)據(jù)庫注入防范系統(tǒng)可以實現(xiàn)對用戶輸入信息的精準判斷,從而進一步提升數(shù)據(jù)庫安全,防止SQL數(shù)據(jù)庫注入攻擊。
綜上所述,通過分析SQL數(shù)據(jù)庫注入攻擊的基本特點以及SQL數(shù)據(jù)庫被攻擊以后對數(shù)據(jù)信息形成的威脅,說明了加強Java Web應(yīng)用程序的防御功能的必要性。SQL數(shù)據(jù)庫的安全與廣大網(wǎng)民信息安全密切相關(guān),因此要提高數(shù)據(jù)的安全性,加強客戶端與服務(wù)端的共同檢測,完善SQL數(shù)據(jù)庫注入防范系統(tǒng),同時還要加大編碼字符防范的復(fù)雜性,從而減少SQL數(shù)據(jù)庫的注入漏洞。
[1]吳為團,鄭海燕,張銳麗.基于Web應(yīng)用程序的SQL注入攻擊和防范[A].中國通信學(xué)會、江西省通信管理局.第十一屆中國通信學(xué)會學(xué)術(shù)年會論文集[C].中國通信學(xué)會、江西省通信管理局,2015.
[2]張卓.SQL注入攻擊技術(shù)及防范措施研究[D].上海交通大學(xué),2007.
[3]王劍.基于S2S框架的防汛應(yīng)急預(yù)警系統(tǒng)設(shè)計與實現(xiàn)[D].華中科技大學(xué),2013.
[4]隋亮.基于滲透測試的SQL注入漏洞檢測與防范[D].東華大學(xué),2014.
[5]趙陽.基于SQL注入的數(shù)據(jù)安全測評技術(shù)研究[D].沈陽工業(yè)大學(xué),2012.
[6]楊櫻.Web安全與入侵檢測技術(shù)的研究[D].河南理工大學(xué),2009.
[7]盧?。甋QL注入與XSS攻擊防范方法的研究以及防范模型的設(shè)計與實現(xiàn)[D].北京郵電大學(xué),2011.