編寫通用的asp防注入程序
更新時間:2007年03月12日 00:00:00 作者:
編寫通用的asp防注入程序 選擇自 ph4studio 的 Blog
關鍵字 編寫通用的asp防注入程序
出處
sql注入被那些菜鳥級別的所謂黑客高手玩出了滋味,,發(fā)現(xiàn)現(xiàn)在大部分黑客入侵都是基于sql注入實現(xiàn)的
,哎,,誰讓這個入門容易呢,好了,,不說廢話了,,現(xiàn)在我開始說如果編寫通用的sql防注入程序
一般的http請求不外乎 get 和 post,所以只要我們在文件中過濾所有post或者get請求中的參數(shù)信息中
非法字符即可,所以我們實現(xiàn)http 請求信息過濾就可以判斷是是否受到sql注入攻擊。
iis傳遞給asp.dll的get 請求是是以字符串的形式,,當 傳遞給Request.QueryString數(shù)據(jù)后,,
asp解析器會分析Request.QueryString的信息,,然后根據(jù)"&",分出各個數(shù)組內的數(shù)據(jù)
所以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('天下電影聯(lián)盟SQL通用防注入系統(tǒng)提示↓nn請不要在參數(shù)中包含非法字符嘗試注入!');history.back(-1)</Script>"
Response.end
end if
next
Next
End If
這樣我們就實現(xiàn)了get請求的注入的攔截,但是我們還要過濾post請求,所以我們還得繼續(xù)考慮request.form,這個也是以數(shù)組形式存在的,,我們只需要再進一次循環(huán)判斷即可。代碼如下
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('天下電影聯(lián)盟SQL通用防注入系統(tǒng)提示↓nn請不要在參數(shù)中包含非法字符嘗試注入!nnHTTP://www.521movie.com ');history.back(-1)</Script>"
Response.end
end if
next
next
end if
好了大功告成,,我們已經(jīng)實現(xiàn)了get和post請求的信息攔截,,你只需要在conn.asp之類的打開數(shù)據(jù)庫文件之前引用這個頁面即可。放心的繼續(xù)開發(fā)你的程序,,不用再考慮是否還會受到sql注入攻擊。難道不是么?
關鍵字 編寫通用的asp防注入程序
出處
sql注入被那些菜鳥級別的所謂黑客高手玩出了滋味,,發(fā)現(xiàn)現(xiàn)在大部分黑客入侵都是基于sql注入實現(xiàn)的
,哎,,誰讓這個入門容易呢,好了,,不說廢話了,,現(xiàn)在我開始說如果編寫通用的sql防注入程序
一般的http請求不外乎 get 和 post,所以只要我們在文件中過濾所有post或者get請求中的參數(shù)信息中
非法字符即可,所以我們實現(xiàn)http 請求信息過濾就可以判斷是是否受到sql注入攻擊。
iis傳遞給asp.dll的get 請求是是以字符串的形式,,當 傳遞給Request.QueryString數(shù)據(jù)后,,
asp解析器會分析Request.QueryString的信息,,然后根據(jù)"&",分出各個數(shù)組內的數(shù)據(jù)
所以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('天下電影聯(lián)盟SQL通用防注入系統(tǒng)提示↓nn請不要在參數(shù)中包含非法字符嘗試注入!');history.back(-1)</Script>"
Response.end
end if
next
Next
End If
這樣我們就實現(xiàn)了get請求的注入的攔截,但是我們還要過濾post請求,所以我們還得繼續(xù)考慮request.form,這個也是以數(shù)組形式存在的,,我們只需要再進一次循環(huán)判斷即可。代碼如下
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('天下電影聯(lián)盟SQL通用防注入系統(tǒng)提示↓nn請不要在參數(shù)中包含非法字符嘗試注入!nnHTTP://www.521movie.com ');history.back(-1)</Script>"
Response.end
end if
next
next
end if
好了大功告成,,我們已經(jīng)實現(xiàn)了get和post請求的信息攔截,,你只需要在conn.asp之類的打開數(shù)據(jù)庫文件之前引用這個頁面即可。放心的繼續(xù)開發(fā)你的程序,,不用再考慮是否還會受到sql注入攻擊。難道不是么?
相關文章
ASP:ActiveX不能創(chuàng)建Scripting.FileSystemObject對象解決辦法
關于ActiveX不能創(chuàng)建Scripting.FileSystemObject對象的類似問題,大體上解決辦法都是類似的,主要是思想要清晰:首先考慮組件注冊問題,其次是組件權限問題,如果服務器配置沒有問題的話,那就仔細檢查一下你的程序源碼吧2011-11-11
ASP,vbs正則輪翻在文章段落后加上網(wǎng)址等內容
ASP,vbs正則輪翻在文章段落后加上網(wǎng)址,網(wǎng)站名稱,網(wǎng)站介紹等內容2008-06-06
實現(xiàn)對Access數(shù)據(jù)庫表重命名的一段代碼
實現(xiàn)對Access數(shù)據(jù)庫表重命名的一段代碼...2006-07-07
ASP讀取Request.QueryString編碼的函數(shù)代碼
ASP讀取Request.QueryString編碼的函數(shù)代碼,學習asp的朋友可以參考下。2011-09-09
ImageMagickObject獲取圖片的信息無返回值的解決辦法
這篇文章主要介紹了ImageMagickObject獲取圖片的信息無返回值的解決辦法,非常簡單,加上format參數(shù)即可,需要的朋友可以參考下2015-05-05

