'--------这是另外一个补充版本的防注水代码------------------
'这个需要创建一个 t_web_sys_hackinfo 的 表,保存了黑客攻击的信息,名手攻击时的IP,所传的值,访问页面\时间等....
'由于需要保存数据,这个要求放在数据库打开之后.
'--------定义部份------------------以下为代码:
function check_user_input()
'--------版权说明------------------
'SQL通用防注入程序
'--------定义部份------------------
Dim Fy_Post,Fy_Get,Fy_In,Fy_Inf,Fy_Xh,Fy_db,Fy_dbstr
'自定义需要过滤的字串,用 "|" 分隔
'由于管理需要的不同,get方法和post提交时,对关键字的敏感程序要求不一样,post提交可以低一些
'post
Fy_In = "'|and|exec|insert|select|delete|update|count|chr|mid|master|truncate|char|declare"
'get
Fy_In_get = "[email=]'|*|%|@|and|exec|insert|select|delete|update|count|chr|mid|master|truncate|char|declare[/email]"
'----------------------------------
Fy_Inf = split(Fy_In,"|")
'--------POST部份------------------
If Request.Form<>"" Then
For Each Fy_Post In Request.Form
For Fy_Xh=0 To Ubound(Fy_Inf)
If Instr(LCase(Request.Form(Fy_Post)),Fy_Inf(Fy_Xh))<>0 Then
'--------写入数据库--头--------
Conn.Execute("insert into t_web_sys_hackinfo(IP,link,way,inputname,content) values('"&Request.ServerVariables("REMOTE_ADDR")&"','"&Request.ServerVariables("URL")&"','POST','"&Fy_Post&"','"&replace(Request.Form(Fy_Post),"'","''")&"')")
'--------写入数据库--尾--------
Response.Write "<Script Language=JavaScript>alert('严重警告:请不要在参数中包含非法字符尝试注入!');</Script>"
Response.Write "非法操作:系统做了如下记录<br>"
Response.Write "操作IP:"&Request.ServerVariables("REMOTE_ADDR")&"<br>"
Response.Write "操作时间:"&Now&"<br>"
Response.Write "操作页面:"&Request.ServerVariables("URL")&"<br>"
Response.Write "提交方式:POST<br>"
Response.Write "提交参数:"&Fy_Post&"<br>"
Response.Write "提交数据:"&Request.Form(Fy_Post)
Response.End
End If
Next
Next
End If
'----------------------------------
'--------GET部份-------------------
Fy_Inf = split(Fy_In_get,"|")
If Request.QueryString<>"" Then
For Each Fy_Get In Request.QueryString
For Fy_Xh=0 To Ubound(Fy_Inf)
If Instr(LCase(Request.QueryString(Fy_Get)),Fy_Inf(Fy_Xh))<>0 Then
'--------写入数据库--头--------
Conn.Execute("insert into t_web_sys_hackinfo(IP,link,way,inputname,content) values('"&Request.ServerVariables("REMOTE_ADDR")&"','"&Request.ServerVariables("URL")&"','GET','"&Fy_Get&"','"&replace(Request.QueryString(Fy_Get),"'","''")&"')")
'--------写入数据库--尾--------
Response.Write "<Script Language=JavaScript>alert('严重警告:请不要在参数中包含非法字符尝试注入!');</Script>"
Response.Write "非法操作:系统做了如下记录<br>"
Response.Write "操作IP:"&Request.ServerVariables("REMOTE_ADDR")&"<br>"
Response.Write "操作时间:"&Now&"<br>"
Response.Write "操作页面:"&Request.ServerVariables("URL")&"<br>"
Response.Write "提交方式:GET<br>"
Response.Write "提交参数:"&Fy_Get&"<br>"
Response.Write "提交数据:"&Request.QueryString(Fy_Get)
Response.End
End If
Next
Next
End If
end function
call check_user_input()
创建表的代码:
CREATE TABLE [dbo].[t_web_sys_hackinfo] (
[id_] [int] IDENTITY (1, 1) NOT NULL ,
[IP] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[link] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
[inputname] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[way] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[content] [text] COLLATE Chinese_PRC_CI_AS NULL ,
[dateandtime] [datetime] NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
ALTER TABLE [dbo].[t_web_sys_hackinfo] ADD
CONSTRAINT [DF_t_web_sys_hackinfo_dateandtime] DEFAULT (getdate()) FOR [dateandtime]
GO