zoukankan      html  css  js  c++  java
  • 防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)&" 的值中包含非法字符串! 请不要在参数中出现:and,select,update,insert,delete,chr 等非法字符! 我已经设置了不能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)&"的值中包含非法字符串! 请不要在参数中出现:,and,select,update,insert,delete,chr 等非法字符! 设计了门,非法侵入请离开,谢谢!');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&" 的值中包含非法字符串! 请不要在参数中出现: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&"的值中包含非法字符串! 请不要在参数中出现: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&" 的值中包含非法字符串! 请不要在表单中出现: % & * # ( ) 等非法字符!');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&"的值中包含非法字符串! 请不要在表单中出现: % & * # ( ) 等非法字符!');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(""警告: 请不要做任何尝试"");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(""警告: 请不要做任何尝试"");location.href=""index.asp"";</script>"
    Response.End
    End If
    Next
    Next
    End If
    %>

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

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

  • 相关阅读:
    Eclipse中项目进行发布到Tomcat中的位置
    Tomcat中server.xml文件的配置
    Tomcat的安装跟配置
    实习第二天(查看项目源代码)
    mac、windows、linux版jdk1.8下载
    idea搭建简单ssm框架的最详细教程(新)
    ssm中mapper注入失败的传奇经历
    富文本编辑器handyeditor,上传和预览图片的host地址不一样
    nginx配置ssl证书
    java中pojo对象首字母大写导致无法赋值问题
  • 原文地址:https://www.cnblogs.com/milantgh/p/4577029.html
Copyright © 2011-2022 走看看