您的位置:首页 > 数据库

通用的防止SQL注入代码

2009-04-19 14:20 337 查看
新建sqllin.asp网页文件,编写以下代码检查POST和GET方式提交的所有数据,如果发现有过滤字符,则显示弹出对话框,并中断程序的运行

<%
Dim SQL_Post,SQL_Get,strFilter,aFilter,i
strFilter=" |;|and|(|)|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare"
aFilter=split(strFilter,"|")
If Request.Form<>"" Then 检查POST方式提交的数据
For Each SQL_Post In Request.Form
For i=0 To Ubound(aFilter)
If Instr(LCase(Request.Form(SQL_Post)),aFilter(i))<>0 Then
此处可添加保存恶意攻击者的信息到数据库
str=str & "<Script Language=JavaScript>"
str=str & "alert( 请不要在参数中包含非法字符尝试注入攻击本站!/n/n"
str=str & "本站已经记录了您的以下数据:/n/n"
str=str & "操作IP:" & Request.ServerVariables("REMOTE_ADDR")&"/n/n"
str=str & "操作时间:"& Now & "/n/n"
str=str & "操作页面:"&Request.ServerVariables("URL")&"/n/n"
str=str & "提交方式:POST/n/n"
str=str & "提交参数:"& SQL_Post &"/n/n"
str=str & "提交数据:"& Request.Form(SQL_Post)
str=str & "</script>"
Response.Write str
Response.End
End If
Next
Next
End If

If Request.QueryString<>"" Then 检查GET方式提交的数据
For Each SQL_Get In Request.QueryString
For i=0 To Ubound(aFilter)
If Instr(LCase(Request.QueryString(SQL_Get)),aFilter(i))<>0 Then
此处可添加保存恶意攻击者的信息到数据库
str= "<Script Language=JavaScript>"
str=str & "alert( 请不要在参数中包含非法字符尝试注入攻击本站!/n/n"
str=str & "本站已经记录了您的以下数据:/n/n"
str=str & "操作IP:" & Request.ServerVariables("REMOTE_ADDR")&"/n/n"
str=str & "操作时间:"& Now & "/n/n"
str=str & "操作页面:"&Request.ServerVariables("URL")&"/n/n"
str=str & "提交方式:GET/n/n"
str=str & "提交参数:" & SQL_Post &"/n/n"
str=str & "提交数据:" & Request.QueryString(SQL_Get) & " );"
str=str & "</script>"
Response.Write str
Response.End
End If
Next
Next
End If
%>

在过滤字符串strFilter中可根据需要进行添加

在处理用户提交数据的页面首部包含sqlin.asp文件即可

<!--#include file=sqllin.asp-->
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: