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
好了大功告成,我們已經實現了get和post請求的資訊攔截,你只需要在conn.asp之類的開啟資料庫檔案之前引用這個頁面即可。放心的繼續開發你的程式,不用再考慮是否還會受到sql注入攻擊。難道不是麼?
編寫通用的ASP防SQL注入程式
sql注入被那些菜鳥級別的所謂黑客高手玩出了滋味,發現現在大部分黑客入侵都是基於sql注入實現的,哎,誰讓這個入門容易呢,好了,不說廢話了,現在我開始說如果編寫通用的sql防注入程式一般的http請求不外乎get 和 post,所以只要我們在檔案中過濾所有post或者get請求中的引數資訊中非法字元...
編寫通用的ASP防SQL注入程式
好了,不說廢話了,現在我開始說如果編寫通用的sql防注入程式一般的http請求不外乎get 和 post,所以只要我們在檔案中過濾所有post或者get請求中的引數資訊中非法字元即可,所以我們實現http 請求資訊過濾就可以判斷是是否受到sql注入攻擊。iis傳遞給asp.dll的get 請求是是以...
編寫通用的ASP防SQL注入程式
sql注入被那些菜鳥級別的所謂黑客高手玩出了滋味,發現現在大部分黑客入侵都是基於sql注入實現的,哎,誰讓這個入門容易呢,好了,不說廢話了,現在我開始說如果編寫通用的sql防注入程式一般的http請求不外乎get 和 post,所以只要我們在檔案中過濾所有post或者get請求中的引數資訊中非法字元...