请教高手修改下此段asp代码

来源:百度知道 编辑:UC知道 时间:2024/07/05 02:35:45
<%
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
%&g

输入Email时没有提示警告?你输入哪个Email有警告?master@xx.com?还是webmaster@xx.com?
=========================================
"'|and|exec|insert|select|delete|update|count|*|chr|mid|master|truncate|char|declare"
上面这些是要过滤的字符,不想过滤就去除,以|分隔
==============================================================
可防止 post get 注入

Request.QueryString get方法
Request.Form post方法
这个是通用过滤,也就是什么都过滤

现在我想使输入Email时没有提示警告,很简单,单独做成一个文件,不包含上面代码就可以

可以告诉你,这段代码不但过滤了常用的词语,也起不到防注入的作用。

想要防注入非常简单,使用ADODB.Command参数化SQL语句就可以,没必要过滤任何字符。

起不到防注入的目的