此文章主要向大家描述的是在Web下SQL注入攻擊的檢測和防御的實際應(yīng)用在前人提出的“對用戶輸入信息實施過濾”的技術(shù)基礎(chǔ)上,建立了針對SQL注入攻擊的檢測/防御/備案通用模型。該模型在客戶端和服務(wù)器端設(shè)置兩級檢查。
對于一般性用戶誤操作和低等級惡意攻擊,客戶端的檢查將自動做出反應(yīng);考慮到客戶端檢查有可能被有經(jīng)驗的攻擊者繞開,特在服務(wù)器端設(shè)定二級檢查。在文中還提出了對高等級惡意攻擊的自動備案技術(shù),并給出了相應(yīng)代碼。
互聯(lián)網(wǎng)上的安全問題越來越嚴重,入侵檢測(IDS)也因而顯得尤為必要。MS SQL Server作為數(shù)據(jù)庫市場的主要產(chǎn)品之一,研究針對他的SQL攻擊處理方案,建立一個通用的SQL注入攻擊防御、檢測、備案模型,對于加強安全建設(shè)具有積極的意義。
1、SQL注入攻擊簡介
SQL注入攻擊源于英文“SQL Injection Attack”。目前還沒有看到一種標準的定義,常見的是對這種攻擊形式、特點的描述。微軟技術(shù)中心從2個方面進行了描述:
(1)腳本注入式的攻擊。
(2)惡意用戶輸入用來影響被執(zhí)行的SQL腳本。
Stephen Kost給出了這種攻擊形式的另一個特征,“從一個數(shù)據(jù)庫獲得未經(jīng) 授權(quán)的訪問和直接檢索”。SQL注入攻擊就其本質(zhì)而言,他利用的工具是SQL的語法,針對的是應(yīng)用程序開發(fā)者編程過程中的漏洞。“當攻擊者能夠操作數(shù)據(jù),往應(yīng)用程序中插入一些SQL語句時,SQL注入攻擊就發(fā)生了”。
由于SQL注入攻擊利用的是SQL語法,使得這種攻擊具有廣泛性。理論上說,對于所有基于SQL語言標準的數(shù)據(jù)庫軟件都是有效的,包括MS SQL Server,Oracle,DB2,Sybase,MySQL等。當然,各種軟件有自身的特點,最終的攻擊代碼可能不盡相同。SQL注入攻擊的原理相對簡單,易于掌握和實施,并且整個Internet上連接有數(shù)目驚人的數(shù)據(jù)庫系統(tǒng)(僅在中國,截至2003年3月的統(tǒng)計就有82 900多個),在過去的幾年里,SQL攻擊的數(shù)量一直在增長。
2、SQL注入式攻擊的檢測及跟蹤
2.1SQL攻擊檢測/防御/跟蹤模型
針對SQL攻擊的防御,前人做過大量的工作,提出的解決方案包括 :
(1)封裝客戶端提交信息。
(2)替換或刪除敏感字符/字符串。
(3)屏蔽出錯信息以及。
(4)在服務(wù)端正式處理之前對提交數(shù)據(jù)的合法性進行檢查等。
方案(1)的做法需要RDBMS的支持,目前只有Oracle采用該技術(shù);
方案(2)是一種不 完全的解決措施,舉例來說明他的弱點,當客戶端的輸入為“…ccmdmcmdd…”時,在對敏感字符串“cmd”替換刪除以后,剩下的字符正好是“…cmd…”;
方案(3)的實質(zhì)是在服務(wù)端處理完畢之后進行補救,攻擊已經(jīng)發(fā)生,只是阻止攻擊者知道攻擊的結(jié)果;
方案(4)被多數(shù)的研究 者認為是最根本的解決手段,在確認客戶端的輸入合法之前,服務(wù)端拒絕進行關(guān)鍵性的處理操作。
方案(4)與(2)的區(qū)別在于,方案(4)一旦檢測到敏感字符/字符串,針對數(shù)據(jù)庫的操作即行中止,而方案(2)是對有問題的客戶端輸入做出補救,不中止程序后續(xù)操作。方案(2)雖然在一定程度上有效,但有“治標不治本”的嫌疑,新的攻擊方式正在被不斷發(fā)現(xiàn),只要允許服務(wù)端程序使用這些提交信息,就總有受到攻擊的可能。
因此,本文中針對SQL注入攻擊的檢測/防御/備案模型即基于提交信息的合法性檢 查,在客戶端和服務(wù)端進行兩級檢查,只要任一級檢查沒有通過,提交的信息就不會進入query語句,不會構(gòu)成攻擊。在客戶端和服務(wù)端進行合法性檢查的函數(shù)基本相同?蛻舳藱z查的主要 作用是減少網(wǎng)絡(luò)流量,降低服務(wù)器負荷,將一般誤操作、低等級攻擊與高等級攻擊行為區(qū)分開來。技術(shù)上,客戶端的檢查是有可能被有經(jīng)驗的攻擊者繞開的,在這種情形下,提交的數(shù)據(jù)被直接發(fā)往服務(wù)端,通過在服務(wù)器端設(shè)定二級檢查就顯得十分必要。由于正常提交到服務(wù)端的數(shù)據(jù)已經(jīng)在客戶端檢查過,因此,服務(wù)端檢查到的提交異常基本可以認定為惡意攻擊行為所致,中止提交信息的處理,進行攻擊備案,并對客戶端給出出錯/警告提示。對應(yīng)模型簡圖如(圖1)所示。
相關(guān)閱讀