通用asp防注入程序的方法,大家了解嗎?其實這個方法不僅適用于ASP,而且適用于任何使用ado對象模型與數據庫交互的語言,以下是錯新技術頻道小編給大家推薦的通用asp防注入程序的方法,希望能幫到大家。
編寫通用的asp防注入程序?????選擇自?ph4studio?的?Blog??
關鍵字???編寫通用的asp防注入程序?
出處????
?sql注入被那些菜鳥級別的所謂黑客高手玩出了滋味,,發現現在大部分黑客入侵都是基于sql注入實現的?
,哎,,誰讓這個入門容易呢,好了,,不說廢話了,,現在我開始說如果編寫通用的sql防注入程序?
一般的http請求不外乎?get?和?post,所以只要我們在文件中過濾所有post或者get請求中的參數信息中?
非法字符即可,所以我們實現http?請求信息過濾就可以判斷是是否受到sql注入攻擊。?
iis傳遞給asp.dll的get?請求是是以字符串的形式,,當?傳遞給Request.QueryString數據后,,?
asp解析器會分析Request.QueryString的信息,,然后根據"&",分出各個數組內的數據?
所以get的攔截如下?
首先我們定義請求中不能包含如下字符?
'|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare?
各個字符用"|"隔開,,然后我們判斷的得到的Request.QueryString?
具體代碼如下?
dim?sql_injdata?
SQL_injdata?=?"'|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare"?
SQL_inj?=?split(SQL_Injdata,"|")?
If?Request.QueryString<>""?Then?
For?Each?SQL_Get?In?Request.QueryString?
For?SQL_Data=0?To?Ubound(SQL_inj)?
if?instr(Request.QueryString(SQL_Get),Sql_Inj(Sql_DATA))>0?Then?
Response.Write?"<Script?Language=****>alert('天下電影聯盟SQL通用防注入系統提示↓nn請不要在參數中包含非法字符嘗試注入!');history.back(-1)</Script>"?
Response.end?
end?if?
next?
Next?
End?If?
這樣我們就實現了get請求的注入的攔截,但是我們還要過濾post請求,所以我們還得繼續考慮request.form,這個也是以數組形式存在的,,我們只需要再進一次循環判斷即可。代碼如下?
If?Request.Form<>""?Then?
For?Each?Sql_Post?In?Request.Form?
For?SQL_Data=0?To?Ubound(SQL_inj)?
if?instr(Request.Form(Sql_Post),Sql_Inj(Sql_DATA))>0?Then?
Response.Write?"<Script?Language=****>alert('天下電影聯盟SQL通用防注入系統提示↓nn請不要在參數中包含非法字符嘗試注入!nnHTTP://www.521movie.com?');history.back(-1)</Script>"?
Response.end?
end?if?
next?
next?
end?if??
上述是錯新技術頻道小編為大家帶來的通用asp防注入程序的方法,我們在打開數據庫文件之前,只需要參考本文即可。
?
新聞熱點
疑難解答