防sql注入

防sql注入,是一種網站防止黑客攻擊的方式。

基本原理

網站要怎么防範最最常見SQL注入式攻擊呢,我們先從SQL注入式攻擊的原理來說起。

網站遭受SQL注入式攻擊的基本原理:

1.沒有正確過濾特殊字元,例如單引號和分號如果你的sql語句是這樣,又沒過濾“’”單引號:"SELECT * FROM tables WHERE param = '" + RequestString+ "'; "攻擊者將用戶名變數(即RequestString)設定為:a' or 't'="t

此時原始語句發生了變化:SELECT * FROM tables WHERE param = "a' OR 't'="t";

如果這種代碼被用於一個認證過程,那么這個例子就能夠強迫選擇一個合法的用戶名,因為賦值't'="t永遠是正確的。這種方式是跳過身份認證的最簡單手段

再配合“;”分號可以進行更多的SQL注入攻擊";"分號用來執行多個語句。下面語句中的RequestString的值將會導致刪除“tables”表,又可以從“dataTables”表中選擇所有的數據(實際上就是透露了每一個用戶的信息)。a"; DROP TABLE tables; SELECT * FROM dataTables WHERE param LIKE '%

這就將最終的SQL語句變成下面這個樣子:SELECT * FROM tables WHERE param = 'a'; DROP TABLE tables; SELECT * FROM dataTables WHERE param LIKE '%';

通過這種原理可以執行很多很多攻擊了。

2.不正確處理變數類型

如果一個用戶提供的欄位並非一個強類型,或者沒有實施類型強制,就會發生這種形式的攻擊。當在一個SQL語句中使用一個數字欄位時,如果程式設計師沒有檢查用戶輸入的合法性(是否為數字型)就會發生這種攻擊。

例如:“SELECT * FROM tables WHERE id = " + RequestID + "; "

從這個語句可以看出,作者希望RequestID是一個數字。不過,如果終端用戶選擇一個字元串,就繞過了對轉義字元的需要。例 如,將RequestID設定為1; DROP TABLE tables 就不需要上面說的“‘”單引號了,照樣可以進行攻擊:會將“tables”表從資料庫中刪除,SQL語句變成:SELECT * FROM DATA WHERE id = 1; DROP TABLE users。

基本方式

網站遭受SQL注入式攻擊的基本方式:

1.最常見的也就是在查詢字元串中直接輸入SQL攻擊字元串。

例如:page.asp?id=Num and exists (select * from [admin])

2.其次就是在FORM表單中提交的SQL注入攻擊欄位。

3.通過COOKIE繞過一些放注入的腳本程式

例如:javascript:alert(document.cookie="id="+escape("這就是asp? id=xx後面xx代表的數值) and (這裡是注入攻擊代碼)"));

4.還有就是上面幾種的攻擊通過16進制編碼後,繞過SQL注入檢測的腳本程式

page.asp?id=Num;DeCLaRE @S nvarchar(4000);SeT @S=CaSt(0x4400650063006C0061007200650020004000540020005600610072006300680061007200280032003500350029002C0040004300200056006100720063006800610072002800320035003500290020004400650063006C0061007200650020005400610062006C0065005F0043007500720073006F00720020004300750072007300'

這種可以跳過敏感字元的判斷和SQL關鍵字的判斷。

總結一下,要防止SQL注入主要是要在查詢字元串(QueryString),表單數據(PostData)以及Cookie甚至HTTP報頭(Header)中防止掉一些特殊字元(單引號,分號)以及SQL語言的關鍵字,以及防止他們使用16進制編碼。

問題處理

用ASP或者PHP腳本來實現上面的這些想起來就很麻煩。下面就來介紹下用一個第三方工具iisutm來處理上面我們說到的問題。

根據iisutm網站防火牆安裝及操作手冊 中的說明把IISUTM部署到你的伺服器上來,這裡需要注意的是使用Windows 2003+iis6的伺服器,需要開啟iis中“以IIS5.0 隔離模式運行 www 服務”選項才能正常使用該軟體。

安裝完成,通過瀏覽器訪問IISUTM的配置管理界面默認的是127.0.0.1:8362,這個是私有地址,只能在該伺服器上訪問,你需要任何地方都能訪問的話,可以在安裝的時候IP位址的選項那裡填入你伺服器的公網IP位址,和你所開放的連線埠。這樣你就可以通過你配置的地址進行訪問,或者你可以在iis中直接管理名為IISUTM的站點。

登入管理界面後點擊上面導航欄中的“基本設定”,然後點擊左邊選單的“防SQL注入”連結。

開啟該連結里所有的選項,選中之後IISUTM會自動保存配置,下面的SQL注入關鍵字是該軟體提供的SQL注入關鍵字以及特殊符號的特徵庫,你可以根據你網站的情況進行更改(最好不要修改)。IISUTM會自動拒絕16進制的編碼。

確認以上的配置以後,你可以返回到IISUTM管理界面的首頁,這裡會列出伺服器遭受到的攻擊以及詳細,趕緊去看看你的網站是不是隨時有人在進行SQL注入吧,以及哪些攻擊被IISUTM處理掉了。

相關詞條

熱門詞條

聯絡我們