• ASP防注入Function


    '=====================================================================
    '
    --- 參數說明---asp防sql注入
    '
    ParaName:參數名稱--字符型
    '
    ParaType:參數類型-數字型(0表示為數值型,其它表示字符型)
    '
    =======================================================================
    Function rq(ParaName,ParaType)
        
    Dim ParaValue
        ParaValue
    =trim(Request(ParaName))
        
    If ParaType=0 then
            
    If ParaValue="" or not isNumeric(ParaValue) then
                    response.Write(
    "<Script Language='javascript'>alert('參數" & ParaName & "必須為數值型!');window.history.back(-1)</Script>")
                    response.End()
            
    End if
        
    Else
            ParaValue
    =replace(ParaValue,"'","''")
        
    End if
        rq
    =ParaValue
    End function
    '=====================================================================
    '
    --- 參數說明---asp防sql注入
    '
    ParaName:參數名稱--字符型
    '
    ParaType:參數類型-數字型(0表示為數值型,其它表示字符型)
    '
    =======================================================================
    Function rq(ParaName,ParaType)
        
    Dim ParaValue
        ParaValue
    =trim(Request(ParaName))
        
    dim str,str1,str2
        
    str=""
        str1
    ="<Script Language='javascript'>alert('參數"
        str2
    ="');window.history.back(-1)</Script>"
        
    Select case ParaType
            
    Case '//可以為空,或是為數值型
                IF ParaValue<>"" and not isNumeric(ParaValue) then
                     
    str=str1 & ParaName & "必須為數值型!" & str2
                     response.Write(
    str):response.End()
                
    end if
            
    Case '//不能為空,只允許是數值型
                IF ParaValue="" or not isNumeric(ParaValue) then
                     
    str=str1 & ParaName & "必須為數值型!" & str2
                     response.Write(
    str):response.End()
                
    end if
            
    Case '//可以為空,或是日期型
                IF ParaValue<>"" and not isdate(ParaValue) then
                     
    str=str1 & ParaName & "必須為日期型!" & str2
                     response.Write(
    str):response.End()
                
    end if
            
    Case '//如果要求要將'換成''號處理的
                ParaValue=replace(ParaValue,"'","''")
            
    Case else'//字符串的處理,如果是傳給存儲過程或是帶參數的SQL執行時,不需要進行替換處理
                ParaValue=ParaValue
        
    End Select
        rq
    =ParaValue
    End function

    http://www.secnumen.com/technology/anquanwenzhai.htm 

    代码
    Function Checkstr(Str)  
        
    If Isnull(Str) Then  
            CheckStr 
    = "" 
            
    Exit Function   
        
    End If  
        Str 
    = Replace(Str,Chr(0),""1-11)  
        Str 
    = Replace(Str, """"""""""1-11)  
        Str 
    = Replace(Str,"<","<"1-11)  
        Str 
    = Replace(Str,">",">"1-11)   
        Str 
    = Replace(Str, "script""script"1-10)  
        Str 
    = Replace(Str, "SCRIPT""SCRIPT"1-10)  
        Str 
    = Replace(Str, "Script""Script"1-10)  
        Str 
    = Replace(Str, "script""Script"1-11)  
        Str 
    = Replace(Str, "object""object"1-10)  
        Str 
    = Replace(Str, "OBJECT""OBJECT"1-10)  
        Str 
    = Replace(Str, "Object""Object"1-10)  
        Str 
    = Replace(Str, "object""Object"1-11)  
        Str 
    = Replace(Str, "applet""applet"1-10)  
        Str 
    = Replace(Str, "APPLET""APPLET"1-10)  
        Str 
    = Replace(Str, "Applet""Applet"1-10)  
        Str 
    = Replace(Str, "applet""Applet"1-11)  
        Str 
    = Replace(Str, "[""[")  
        Str 
    = Replace(Str, "]""]")  
        Str 
    = Replace(Str, """"""1-11)  
        Str 
    = Replace(Str, "=""="1-11)  
        Str 
    = Replace(Str, "'""''"1-11)  
        Str 
    = Replace(Str, "select""select"1-11)  
        Str 
    = Replace(Str, "execute""execute"1-11)  
        Str 
    = Replace(Str, "exec""exec"1-11)  
        Str 
    = Replace(Str, "join""join"1-11)  
        Str 
    = Replace(Str, "union""union"1-11)  
        Str 
    = Replace(Str, "where""where"1-11)  
        Str 
    = Replace(Str, "insert""insert"1-11)  
        Str 
    = Replace(Str, "delete""delete"1-11)  
        Str 
    = Replace(Str, "update""update"1-11)  
        Str 
    = Replace(Str, "like""like"1-11)  
        Str 
    = Replace(Str, "drop""drop"1-11)  
        Str 
    = Replace(Str, "create""create"1-11)  
        Str 
    = Replace(Str, "rename""rename"1-11)  
        Str 
    = Replace(Str, "count""count"1-11)  
        Str 
    = Replace(Str, "chr""chr"1-11)  
        Str 
    = Replace(Str, "mid""mid"1-11)  
        Str 
    = Replace(Str, "truncate""truncate"1-11)  
        Str 
    = Replace(Str, "nchar""nchar"1-11)  
        Str 
    = Replace(Str, "char""char"1-11)  
        Str 
    = Replace(Str, "alter""alter"1-11)  
        Str 
    = Replace(Str, "cast""cast"1-11)  
        Str 
    = Replace(Str, "exists""exists"1-11)  
        Str 
    = Replace(Str,Chr(13),"  50."1-11)  
        CheckStr 
    = Replace(Str,"'","''"1-11)  
    End Function  

    最好的辦法是使用存儲過程或是參數化sql.這樣才可以完全防止注入.

    申明

    非源创博文中的内容均收集自网上,若有侵权之处,请及时联络,我会在第一时间内删除.再次说声抱歉!!!

    博文欢迎转载,但请给出原文连接。

  • 相关阅读:
    windows10 中 svn 代码统计工具 StatSVN 使用详解
    Windows 10 安装 JDK14 Java 环境,没有 jre 包
    GET和POST两种基本请求方法的区别
    图解HTTP学习笔记(一)WEB基础
    【LinuxShell】cp 用法详解
    博客陆续迁移中...
    显示git忽略文件
    字符串遍历
    SDWebImage源码分析(二)
    其他
  • 原文地址:https://www.cnblogs.com/Athrun/p/1333631.html
Copyright © 2020-2023  润新知