asp进行sql注入的过滤

发布时间:2020-03-16编辑:脚本学堂
asp进行sql注入的过滤

一般的http请求不外乎get 和 post,因此sql防注入只要在文件中过滤所有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请求
    代码如下:
 

复制代码 代码示例:

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
 

可以将以上代码写进一个独立的文件,例如filter.asp,然后在conn.asp之类的打开数据库文件之前