注册 登录
编程论坛 ASP技术论坛

“防SQL注入攻击代码” 修改

xiaoguizi106 发布于 2006-12-13 08:58, 742 次点击

<%
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('参数中包含非法字符!');history.back(-1)</Script>"
    Response.end
   end if
  next
 Next
End If

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('参数中包含非法字符!');history.back(-1)</Script>"
    Response.end
   end if
  next
 next
end if
%>

4 回复
#2
hgl52002007-08-12 00:06

不好用啊 提示
错误类型:
Microsoft VBScript 编译器错误 (0x800A0408)
无效字符
/bs/bs/admin/Login.asp, line 7
 For Each SQL_Get In Request.QueryString

#3
hmhz2007-08-12 08:06

修改后

<%
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('参数中包含非法字符!');history.back(-1)</Script>"
    Response.end
   end if
  next
 Next
End If

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('参数中包含非法字符!');history.back(-1)</Script>"
    Response.end
   end if
  next
 next
end if
%>

#4
QQQQQQQQQQQQ2007-08-12 10:26
有必要这要吗?格式化字符串不就行了,主要是双引号和单引号,格式化这两个后,不管输入啥,电脑只会把它当字串处理
#5
谁与争疯2007-08-12 10:41
格式化一些符号就行了,程序就会把其它的当作字符串处理。
1