SQL注入攻擊防範技巧
一般的SQL注入攻擊都是通過建構一條複雜的sql語句,
通過網頁漏洞來執行sql語句,達到攻擊資料庫的目的。
如通過文章ID來查詢某一篇文章的網頁,
通常采用的sql語句為:
sql="select top 1 * from articles where articId="&request("id")
那麼可以簡單地建構一條攻擊語句:
傳入id變量的值為:1; select getDate(); --
進而建構了一條新的sql語句:
select top 1 * from articles where articId=1;
select getDate(); --
雖然這條語句并不能對資料庫産生任何負面影響,
但是其它的攻擊語句也是這樣通過添加語句分隔符;和注釋符号--來組成的。
我們的防範技巧,對所有可以送出傳入的變量進行處理:
1、int類型的資料,如上例中的id,則使用以下方法處理:
<%
on error resume next
id = CInt(request("id"))
%>
2、字元串類型的資料,則進行常見的标點符号過濾處理:
<%
str = request("str")
str = replace(str, "´", "") ´将單引号字元過濾掉
str = replace(str, ";", "") ´将分号過濾掉
´...
%>
其他字元不一一枚舉,你可以寫一個字元過濾的函數,過濾一些在你的網站當中
并不常用的有危險性的符号;也可以采用正規表達式來進行過濾;