你可以到网上找个才通用的防注入系统,一般代码如下:<%
Dim Query_Badword,Form_Badword,i,Err_Message,Err_Web,name
'------定义部份 头----------------------------------------------------------------------
Err_Message = 1 '处理方式:1=提示信息,2=转向页面,3=先提示再转向
Err_Web = \"Err.Asp\" '出错时转向的页面
Query_Badword=\"'∥and∥select∥update∥chr∥delete∥%20from∥;∥insert∥mid∥master.∥set∥chr(37)∥=\"
'在这部份定义get非法参数,使用\"∥\"号间隔
Form_Badword=\"'∥%∥&∥*∥#∥(∥)∥=\" '在这部份定义post非法参数,使用\"∥\"号间隔
'------定义部份 尾-----------------------------------------------------------------------
'
On Error Resume Next
'----- 对 get query 值 的过滤.
if request.QueryString<>\"\" then
Chk_badword=split(Query_Badword,\"∥\")
FOR EACH Query_Name IN Request.QueryString
for i=0 to ubound(Chk_badword)
If Instr(LCase(request.QueryString(Query_Name)),Chk_badword(i))<>0 Then
Select Case Err_Message
Case \"1\"
Response.Write \"<Script Language=JavaScript>alert('传参错误!参数 \"&name&\" 的值中包含非法字符串!\n\n请不要在参数中出现:and update delete ; insert mid master 等非法字符!');window.close();</Script>\"
Case \"2\"
Response.Write \"<Script Language=JavaScript>location.href='\"&Err_Web&\"'</Script>\"
Case \"3\"
Response.Write \"<Script Language=JavaScript>alert('传参错误!参数 \"&name&\"的值中包含非法字符串!\n\n请不要在参数中出现:and update delete ; insert mid master 等非法字符!');location.href='\"&Err_Web&\"';</Script>\"
End Select
Response.End
End If
NEXT
NEXT
End if
'-----对 post 表 单值的过滤.
if request.form<>\"\" then
Chk_badword=split(Form_Badword,\"∥\")
FOR EACH name IN Request.Form
for i=0 to ubound(Chk_badword)
If Instr(LCase(request.form(name)),Chk_badword(i))<>0 Then
Select Case Err_Message
Case \"1\"
Response.Write \"<Script Language=JavaScript>alert('出错了!表单 \"&name&\" 的值中包含非法字符串!\n\n请不要在表单中出现: % & * # ( ) 等非法字符!');window.close();</Script>\"
Case \"2\"
Response.Write \"<Script Language=JavaScript>location.href='\"&Err_Web&\"'</Script>\"
Case \"3\"
Response.Write \"<Script Language=JavaScript>alert('出错了!参数 \"&name&\"的值中包含非法字符串!\n\n请不要在表单中出现: % & * # ( ) 等非法字符!');location.href='\"&Err_Web&\"';</Script>\"
End Select
Response.End
End If
NEXT
NEXT
end if
%>你可以复制以上代码保存为Check_Sql.asp
然后你可以在数据库连接文件中引用这个文件,方式如下:
<!--#Include File="Check_Sql.asp"-->
(这2个文件要放同一根目录下)
当然了,这个系统也不是万能的,因为它只能防止get和post非法提交,而有的系统可以通过Cookle来突破这个系统(比如网趣购物商城就有这个漏洞)
总来来说,运用这个系统还是比没用要安全的多了
实际中要想很好的防程序被注入,就需要你把用户在客户端提交过来的数据进行严格的检查并把危险的Html字符过滤掉 |