当前位置:首页 > ASP教程 > 存储过程

防SQL注入代码(ASP版)

<% 
dim fy_url,fy_a,fy_x,fy_cs(),fy_cl,fy_ts,fy_zx 
‘---定义部份 头------ 
fy_cl = 1 ‘处理方式:1=提示信息,2=转向页面,3=先提示再转向 
fy_zx = "index.asp" ‘出错时转向的页面 
‘---定义部份 尾------ 

on error resume next 
fy_url=request.servervariables("query_string") 
fy_a=split(fy_url,"&") 
redim fy_cs(ubound(fy_a)) 
on error resume next 
for fy_x=0 to ubound(fy_a) 
fy_cs(fy_x) = left(fy_a(fy_x),instr(fy_a(fy_x),"=")-1) 
next 
for fy_x=0 to ubound(fy_cs) 
if fy_cs(fy_x)<>"" then 
if instr(lcase(request(fy_cs(fy_x))),"‘")<>0 or instr(lcase(request(fy_cs(fy_x))),"select")<>0 or instr(lcase(request(fy_cs(fy_x))),"update")<>0 or instr(lcase(request(fy_cs(fy_x))),"chr")<>0 or instr(lcase(request(fy_cs(fy_x))),"delete%20from")<>0 or instr(lcase(request(fy_cs(fy_x))),";")<>0 or instr(lcase(request(fy_cs(fy_x))),"insert")<>0 or instr(lcase(request(fy_cs(fy_x))),"mid")<>0 or instr(lcase(request(fy_cs(fy_x))),"master.")<>0 then 
select case fy_cl 
case "1" 
response.write "<script language=javascript>alert(‘ 出现错误!参数 "&fy_cs(fy_x)&" 的值中包含非法字符串!nn 请不要在参数中出现:and,select,update,insert,delete,chr 等非法字符!nn我已经设置了不能sql注入,请不要对我进行非法手段!‘);window.close();</script>" 
case "2" 
response.write "<script language=javascript>location.href=‘"&fy_zx&"‘</script>" 
case "3" 
response.write "<script language=javascript>alert(‘ 出现错误!参数 "&fy_cs(fy_x)&"的值中包含非法字符串!nn 请不要在参数中出现:,and,select,update,insert,delete,chr 等非法字符!nn设计了门,非法侵入请离开,谢谢!‘);location.href=‘"&fy_zx&"‘;</script>" 
end select 
response.end 
end if 
end if 
next 
%>

以上代码为较多网友所用,从使用的感言来看,效果显著。

dim query_badword,form_badword,err_message,err_web,form_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="‘‖%‖&‖*‖#‖@‖=‖select‖and‖set‖delete" ‘在这部份定义post非法参数,使用"‖"号间隔 

‘------定义部份 尾----------------------------------------------------------------------- 
‘ 
on error resume next 
‘----- 对 get query 值 的过滤. 
if request.querystring<>"" then 
chk_badword=split(query_badword,"‖") 
for each query_form_name in request.querystring 
for i=0 to ubound(chk_badword) 
if instr(lcase(request.querystring(query_form_name)),chk_badword(i))<>0 then 
select case err_message 
case "1" 
response.write "<script language=javascript>alert(‘传参错误!参数 "&form_name&" 的值中包含非法字符串!nn请不要在参数中出现: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(‘传参错误!参数 "&form_name&"的值中包含非法字符串!nn请不要在参数中出现: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 form_name in request.form 
for i=0 to ubound(chk_badword) 
if instr(lcase(request.form(form_name)),chk_badword(i))<>0 then 
select case err_message 
case "1" 
response.write "<script language=javascript>alert(‘出错了!表单 "&form_name&" 的值中包含非法字符串!nn请不要在表单中出现: % & * # ( ) 等非法字符!‘);window.close();</script>" 
case "2" 
response.write "<script language=javascript>location.href=‘"&err_web&"‘</script>" 
case "3" 
response.write "<script language=javascript>alert(‘出错了!参数 "&form_name&"的值中包含非法字符串!nn请不要在表单中出现: % & * # ( ) 等非法字符!‘);location.href=‘"&err_web&"‘;</script>" 
end select 
response.end 
end if 
next 
next 
end if

以上是另一种版本。

<%
dim getflag rem(提交方式)
dim errorsql rem(非法字符) 
dim requestkey rem(提交数据)
dim fori rem(循环标记)
errorsql = "‘~;~and~(~)~exec~update~count~*~%~chr~mid~master~truncate~char~declare" rem(每个敏感字符或者词语请使用半角 "~" 格开)
errorsql = split(errorsql,"~")
if request.servervariables("request_method")="get" then
getflag=true
else
getflag=false
end if
if getflag then
for each requestkey in request.querystring
for fori=0 to ubound(errorsql)
if instr(lcase(request.querystring(requestkey)),errorsql(fori))<>0 then
response.write "<script>alert(""警告:n请不要做任何尝试"");location.href=""index.asp"";</script>"
response.end
end if
next
next 
else
for each requestkey in request.form
for fori=0 to ubound(errorsql)
if instr(lcase(request.form(requestkey)),errorsql(fori))<>0 then
response.write "<script>alert(""警告:n请不要做任何尝试"");location.href=""index.asp"";</script>"
response.end
end if
next
next
end if
%>

1、将上述代码放入conn文件中即可!

2、将上述代码保存为safe.asp,在conn文件中引入也可!


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!