关于SQL防注入,大家帮帮忙!

Jeffris 2006-08-26 05:25:16
今天下载了SQL通用防注入系统,我把大家入到我的论坛上,现在运行的结果是:一旦发的帖子内容包含被过滤字符的话就会弹出对话框,提示非法字符,但我希望的结果是:GET方法不变,而POST方法只是记录IP,不弹出对话框,帖子可以照常发表。因为往往我们的帖子当中包含select insert等字符是正常的情况

请朋友们执教!

以下是代码
'--------定义部分------------------
Dim Fy_Post,Fy_Get,Fy_In,Fy_Inf,Fy_Xh,Fy_db,Fy_dbstr,Kill_IP,WriteSql
'自定义需要过滤的字串,用 "|" 分隔
Fy_In = "'|;|and|(|)|exec|insert|select|delete|update|count|*|%

|chr|mid|master|truncate|char|declare"
Kill_IP=True
WriteSql=True
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
If WriteSql=True Then
killSqlconn.Execute("insert into Ft_SqlIn

(Sqlin_IP,SqlIn_Web,SqlIn_FS,SqlIn_CS,SqlIn_SJ,kill_ip) values('"&Request.ServerVariables

("REMOTE_ADDR")&"','"&Request.ServerVariables("URL")&"','POST','"&Fy_Post&"','"&replace

(Request.Form(Fy_Post),"'","''")&"',false)")
killSqlconn.close
Set killSqlconn = Nothing
End If
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部分-------------------
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
If WriteSql=True Then
killSqlconn.Execute("insert into Ft_SqlIn

(Sqlin_IP,SqlIn_Web,SqlIn_FS,SqlIn_CS,SqlIn_SJ) values('"&Request.ServerVariables

("REMOTE_ADDR")&"','"&Request.ServerVariables("URL")&"','GET','"&Fy_Get&"','"&replace

(Request.QueryString(Fy_Get),"'","''")&"')")
killSqlconn.close
Set killSqlconn = Nothing
End If
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

If Kill_IP=True Then
Dim Sqlin_IP,rsKill_IP,Kill_IPsql
Sqlin_IP=Request.ServerVariables("REMOTE_ADDR")
Kill_IPsql="select Sqlin_IP from Ft_SqlIn where Sqlin_IP='"&Sqlin_IP&"' and

kill_ip=true"
Set rsKill_IP=killSqlconn.execute(Kill_IPsql)
If Not(rsKill_IP.eof or rsKill_IP.bof) Then
Response.write "<Script Language=JavaScript>alert('你的IP已经被本系统自动锁定!

\n\n如想访问本站请和管理员联系!管理员邮箱:support@isunrise.net\n\n [第一缕阳

光 工作室]');</Script>"
Response.End
End If
rsKill_IP.close
End If
%>

如果我仅仅将弹出窗口一段代码屏蔽掉,系统会提示错误,帮帮忙吧
...全文
171 4 打赏 收藏 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jeffris 2006-08-26
  • 打赏
  • 举报
回复
谢谢!这就去看
YISUKU_LEE 2006-08-26
  • 打赏
  • 举报
回复
我得Blog里面有一篇文章,可以看看,也许会有帮助~~~
(声明,文章是摘抄。不是我写的。-_-! 汗!!)
Jeffris 2006-08-26
  • 打赏
  • 举报
回复
谢谢楼上的!
webDreamsinger 2006-08-26
  • 打赏
  • 举报
回复
对于整个站点通用上述防注方案个人感觉并不太好,因为正常情况下,很多内容是包括上述过滤的字符的。

在站点很多情况下,只要对参数进行常规判断就可以了。如:id号只需要判断其值是否为数字并在合理范围内就可以了,无需执行上述复杂的防注程序。



但我希望的结果是:GET方法不变,而POST方法只是记录IP,不弹出对话框,帖子可以照常发表。因为往往我们的帖子当中包含select insert等字符是正常的情况
--把弹出对话框的语句注册掉,并添加记录ip的数据表更新或插入语句就行了呀。
--但提醒要楼对post的内容进行防注判断,要不是然别人成功注入后,你记录IP也没有什么用了。

28,402

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧