程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> ASP編程 >> 關於ASP編程 >> ASP通用防SQL注入攻擊程序

ASP通用防SQL注入攻擊程序

編輯:關於ASP編程
 

SQL注入已經成為目前網站攻擊的主流,隨便哪個菜鳥黑客從網上下載個SQL注入工具就可以進行網站攻擊了,這真是讓那些程序員心寒啊,辛苦好久的傑作被這些菜鳥就給攻擊了,難道就沒有辦法對付他們了嗎?當然有辦法,SQL注入一般的http請求不外乎get和post,所以只要我們在文件中過濾所有post或者get請求中的參數信息中非法字符,就可以防SQL注入攻擊。
IIS傳遞給asp.dll的get請求是以字符串的形式,當傳遞給Request.QueryString數據後,asp解析器會分析Request.QueryString的信息,然後根據"&",分出各個數組內的數據。下面分別列出get攔截和post攔截的代碼:

'======get攔截======
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='javascript'>alert('HTMer.com系統提示↓nn請不要在參數中包含非法字符嘗試注入!nnHTTP://www.xx.com');history.back(-1)</Script>"
Response.end
end if
next
next
end If

 

'======post攔截======
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='javascript'>alert('HTMer.com系統提示↓nn請不要在參數中包含非法字符嘗試注入!nnHTTP://www.xx.com');history.back(-1)</Script>"
Response.end
end if
next
next
end if

好了,我們已經實現了get和post請求的信息攔截,你只需要在conn.asp之類的打開數據庫文件之前引用這個頁面即可。
 

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved