<%'禁止SQL注入开始
'区分语句的大小写select|SELECT|Select等
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.Form<>"" Then
For Each SQL_Get In Request.Form
For SQL_Data=0 To Ubound(SQL_inj)
if instr(Lcase(Request.Form(SQL_Get)),Sql_Inj(SQL_Data))>0 Then
response.redirect "index.asp"
'Response.Write "<Script>alert('SQL禁止注入,请不要在参数中包含非法字符尝试注入!');history.back(-1)</Script>"
Response.end
end if
next
Next
End If%>
这种方法存在一定问题,一旦用户名或者密码中存在SQL_injdata指定的某个字符的时候,如果设定用户名为handang,系统就会认为试图进行SQL注入,因为此用户名中包含and关键词。
2.4.3 代替Request防止SQL注入攻击
下面提供一个函数,代替ASP中的Request函数,可以防止一切的SQL注入,代码如下:
<%Function SafeRequest(ParaName,ParaType)
'--- 传入参数 ---
'ParaName:参数名称-字符型
'ParaType:参数类型-数字型(1表示以上参数是数字,0表示以上参数为字符)
Dim ParaValue
|