複製鏈接
請複製以下鏈接發送給好友

防sql注入

鎖定
防sql注入,是一種網站防止黑客攻擊的方式,最常見注入式攻擊的也就是在查詢字符串中直接輸入SQL攻擊字符串。
中文名
防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注入基本方式

網站遭受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進制編碼。

防sql注入問題處理

用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處理掉了。