站长搜索提供的有关服务器安全的资讯信息! 网站监控 服务器监控 SEO监控 近日笔者的小站遭受到SQL入侵,于是上网搜索了一些相关防SQL注入的方法。 版本颇多,有人觉得这段好用,有人以为那段才行,因此综合整理了一下,包含以下几种: 以下为引用的内容:<% 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,"&")
站长搜索提供的有关服务器安全的资讯信息! 网站监控 服务器监控 SEO监控
近日笔者的小站遭受到SQL入侵,于是上网搜索了一些相关防SQL注入的方法。
版本颇多,有人觉得这段好用,有人以为那段才行,因此综合整理了一下,包含以下几种:
以下为引用的内容:<% 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" ThenGetFlag=TrueElseGetFlag=FalseEnd IfIf GetFlag ThenFor Each RequestKey In Request.QueryStringFor ForI=0 To Ubound(ErrorSql)If Instr(LCase(Request.QueryString(RequestKey)),ErrorSql(ForI))<>0 Thenresponse.write "<script>alert(""警告:n请不要做任何尝试"");location.href=""index.asp"";</script>"Response.EndEnd IfNextNext ElseFor Each RequestKey In Request.FormFor ForI=0 To Ubound(ErrorSql)If Instr(LCase(Request.Form(RequestKey)),ErrorSql(ForI))<>0 Thenresponse.write "<script>alert(""警告:n请不要做任何尝试"");location.href=""index.asp"";</script>"Response.EndEnd IfNextNextEnd If%> |
将上述代码放入conn文件中即可,功能较全面……
若您有相关经历或好的防注方法,欢迎留言交流^_^
另外,亦可参考网络上较为成熟的ASP的cms里所用的防注入程序,不管如何,只想向那些代码入侵的无聊者说:善待他人就是成全自己。(wolf4ever)
声明:本文内容来源自网络,文字、图片等素材版权属于原作者,平台转载素材出于传递更多信息,文章内容仅供参考与学习,切勿作为商业目的使用。如果侵害了您的合法权益,请您及时与我们联系,我们会在第一时间进行处理!我们尊重版权,也致力于保护版权,站搜网感谢您的分享!