posts - 23,comments - 12,trackbacks - 0

          <%
          function sqlcheck(Str,errtype)
          if Instr(LCase(Str),"select ") > 0 or Instr(LCase(Str),"insert ") > 0 or Instr(LCase(Str),"delete ") > 0 or Instr(LCase(Str),"delete from ") > 0 or Instr(LCase(Str),"count(") > 0 or Instr(LCase(Str),"drop table") > 0 or Instr(LCase(Str),"update ") > 0 or Instr(LCase(Str),"truncate ") > 0 or Instr(LCase(Str),"asc(") > 0 or Instr(LCase(Str),"mid(") > 0 or Instr(LCase(Str),"char(") > 0 or Instr(LCase(Str),"xp_cmdshell") > 0 or Instr(LCase(Str),"exec master") > 0 or Instr(LCase(Str),"net localgroup administrators") > 0  or Instr(LCase(Str),"and ") > 0 or Instr(LCase(Str),"net user") > 0 or Instr(LCase(Str),"or ") > 0 then
           Response.write("<script language=javascript>" & vbcrlf & "window.location.href ='ShowError.asp?errtype=" & errtype & "'" & vbcrlf & "</script>")
           Response.End
          end if
          Str=Replace(Str,"_","")     '過濾SQL注入_
          Str=Replace(Str,"*","")     '過濾SQL注入*
          Str=Replace(Str," ","")     '過濾SQL注入空格
          Str=Replace(Str,chr(34),"")   '過濾SQL注入"
          Str=Replace(Str,chr(39),"")            '過濾SQL注入'
          Str=Replace(Str,chr(91),"")            '過濾SQL注入[
          Str=Replace(Str,chr(93),"")            '過濾SQL注入]
          Str=Replace(Str,chr(37),"")            '過濾SQL注入%
          Str=Replace(Str,chr(58),"")            '過濾SQL注入:
          Str=Replace(Str,chr(59),"")            '過濾SQL注入;
          Str=Replace(Str,chr(43),"")            '過濾SQL注入+
          Str=Replace(Str,"{","")            '過濾SQL注入{
          Str=Replace(Str,"}","")            '過濾SQL注入}
          sqlcheck=Str            '返回經(jīng)過上面字符替換后的Str
          end function
          %>


          function SafeRequest(ParaName,ParaType)
          '--- 傳入?yún)?shù) ---
          'ParaName:參數(shù)名稱-字符型
          'ParaType:參數(shù)類型-數(shù)字型(1表示以上參數(shù)是數(shù)字,0表示以上參數(shù)為字符)

          Dim ParaValue
          ParaValue=Request(ParaName)
          If ParaType=1 then
          If not isNumeric(ParaValue) then
          Response.write "參數(shù)" & ParaName & "必須為數(shù)字型!"
          Response.end
          End if
          Else
          ParaValue=replace(ParaValue,"'","''")
          End if
          SafeRequest=ParaValue
          End function


          Function SafeRequest(ParaValue,ParaType)
                 '--- 傳入?yún)?shù) ---
                 'ParaName:參數(shù)名稱-字符型
                 'ParaType:參數(shù)類型-數(shù)字型(1表示以上參數(shù)是數(shù)字,0表示以上參數(shù)為字符)

                 'Dim ParaValue
                 'ParaValue=Request(ParaName)函數(shù)里面是不要加引號
                 If ParaType=1 then
                        If not isNumeric(ParaValue) then
                             Response.write " 參數(shù)" & ParaName & "必須為數(shù)字型!"
                               Response.end
                        End if
                 Else
                        ParaValue=replace(ParaValue,"'","")
               ParaValue=replace(ParaValue,";and 1=1","")
               ParaValue=replace(ParaValue,";and 1=2","")
               ParaValue=replace(ParaValue,";and user>0","")
               ParaValue=replace(ParaValue,">","")
               ParaValue=replace(ParaValue,"<","")
               ParaValue=replace(ParaValue,"=","")
               ParaValue=replace(ParaValue,"count","")
               ParaValue=replace(ParaValue,"select","")
               ParaValue=replace(ParaValue,"drop","")
               ParaValue=replace(ParaValue,"delect","")
               ParaValue=replace(ParaValue,"insert","")
               ParaValue=replace(ParaValue,"execute","")
               ParaValue=replace(ParaValue,"update","")    
               ParaValue=replace(ParaValue,"mid","")
               ParaValue=replace(ParaValue,"exec","")
               ParaValue=replace(ParaValue,"master","")
               ParaValue=replace(ParaValue,"char","")
               ParaValue=replace(ParaValue,"declare","")
               ParaValue=replace(ParaValue,"*","")
               ParaValue=replace(ParaValue,"%","")
               ParaValue=replace(ParaValue,"chr","")
               ParaValue=replace(ParaValue,"truncate","")
                 End if
                 SafeRequest=ParaValue
          End function
          '調(diào)用方式
          DirID=Request("DirID")'///數(shù)據(jù)目錄名稱參數(shù)/無則表示全部數(shù)據(jù)
          DirID=SafeRequest(DirID,1)


          Dim SQL_inbreakstr
          SQL_inbreakstr = "'|or|and|exec|insert|select|delete|update|drop|count|*|%|chr|mid|master|truncate|char|declare"
          SQL_inbreak = split(SQL_inbreakstr,"|")
          R_Q=Request.QueryString
          R_F=Request.Form
          IF R_Q<>"" THEN
           For i=0 To Ubound(SQL_inbreak)
            IF instr(R_Q,SQL_inbreak(i))>0 THEN
             Response.Write "*****"
                                     Response.End
            END IF
           Next
          End IF

          IF R_F<>"" THEN
           For i=0 To Ubound(SQL_inbreak)
            IF instr(R_F,SQL_inbreak(i))>0 THEN
             Response.Write "*****"
                                     Response.End
            END IF
           Next
          END IF


          <%
          '--------版權(quán)說明------------------
          'SQL通用防注入程序 V2.0 完美版
          '本程序由 火狐-楓知秋 獨立開發(fā)
          '對本程序有任何疑問請聯(lián)系本人
          'QQ:613548

          '--------定義部份------------------
          Dim Fy_Post,Fy_Get,Fy_In,Fy_Inf,Fy_Xh,Fy_db,Fy_dbstr
          '自定義需要過濾的字串,用 "楓" 分隔
          Fy_In = "'楓;楓and楓exec楓insert楓select楓delete楓update楓count楓*楓%楓chr楓mid楓master楓truncate楓char楓declare"
          '----------------------------------
          %>

          <%
          Fy_Inf = split(Fy_In,"楓")
          '--------POST部份------------------
          If Request.Form<>"" Then
          For Each Fy_Post In Request.Form

          For Fy_Xh=0 To Ubound(Fy_Inf)
          If Instr(LCase(Request.Form(Fy_Post)),Fy_Inf(Fy_Xh))<>0 Then
          '--------寫入數(shù)據(jù)庫-------頭--------
          Fy_dbstr="DBQ="+server.mappath("SqlIn.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
          Set Fy_db=Server.CreateObject("ADODB.CONNECTION")
          Fy_db.open Fy_dbstr
          Fy_db.Execute("insert into SqlIn(Sqlin_IP,SqlIn_Web,SqlIn_FS,SqlIn_CS,SqlIn_SJ) values('"&Request.ServerVariables("REMOTE_ADDR")&"','"&Request.ServerVariables("URL")&"','POST','"&Fy_Post&"','"&replace(Request.Form(Fy_Post),"'","''")&"')")
          Fy_db.close
          Set Fy_db = Nothing
          '--------寫入數(shù)據(jù)庫-------尾--------

          Response.Write "<Script Language=JavaScript>alert('楓網(wǎng)SQL通用防注入系統(tǒng)提示↓\n\n請不要在參數(shù)中包含非法字符嘗試注入!\n\nHTTP://WwW.WrSkY.CoM  系統(tǒng)版本:V2.0(ASP)完美版');</Script>"
          Response.Write "非法操作!系統(tǒng)做了如下記錄↓<br>"
          Response.Write "操作IP:"&Request.ServerVariables("REMOTE_ADDR")&"<br>"
          Response.Write "操作時間:"&Now&"<br>"
          Response.Write "操作頁面:"&Request.ServerVariables("URL")&"<br>"
          Response.Write "提交方式:POST<br>"
          Response.Write "提交參數(shù):"&Fy_Post&"<br>"
          Response.Write "提交數(shù)據(jù):"&Request.Form(Fy_Post)
          Response.End
          End If
          Next

          Next
          End If
          '----------------------------------

          '--------GET部份-------------------
          If Request.QueryString<>"" Then
          For Each Fy_Get In Request.QueryString

          For Fy_Xh=0 To Ubound(Fy_Inf)
          If Instr(LCase(Request.QueryString(Fy_Get)),Fy_Inf(Fy_Xh))<>0 Then
          ''--------寫入數(shù)據(jù)庫-------頭--------
          Fy_dbstr="DBQ="+server.mappath("SqlIn.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
          Set Fy_db=Server.CreateObject("ADODB.CONNECTION")
          Fy_db.open Fy_dbstr
          Fy_db.Execute("insert into SqlIn(Sqlin_IP,SqlIn_Web,SqlIn_FS,SqlIn_CS,SqlIn_SJ) values('"&Request.ServerVariables("REMOTE_ADDR")&"','"&Request.ServerVariables("URL")&"','GET','"&Fy_Get&"','"&replace(Request.QueryString(Fy_Get),"'","''")&"')")
          Fy_db.close
          Set Fy_db = Nothing
          '--------寫入數(shù)據(jù)庫-------尾--------

          Response.Write "<Script Language=JavaScript>alert('楓網(wǎng)SQL通用防注入系統(tǒng)提示↓\n\n請不要在參數(shù)中包含非法字符嘗試注入!\n\nHTTP://WwW.WrSkY.CoM  系統(tǒng)版本:V2.0(ASP)完美版');</Script>"
          Response.Write "非法操作!系統(tǒng)做了如下記錄↓<br>"
          Response.Write "操作IP:"&Request.ServerVariables("REMOTE_ADDR")&"<br>"
          Response.Write "操作時間:"&Now&"<br>"
          Response.Write "操作頁面:"&Request.ServerVariables("URL")&"<br>"
          Response.Write "提交方式:GET<br>"
          Response.Write "提交參數(shù):"&Fy_Get&"<br>"
          Response.Write "提交數(shù)據(jù):"&Request.QueryString(Fy_Get)
          Response.End
          End If
          Next
          Next
          End If
          '----------------------------------
          %>

          可以防止所有得sql注入:
          Function SafeRequest(ParaName,ParaType)
           '--- 防止SQL注入 ---
           'ParaName:參數(shù)名稱-字符型
           'ParaType:參數(shù)類型-數(shù)字型(1表示以上參數(shù)是數(shù)字,0表示以上參數(shù)為字符)
           Dim ParaValue
           ParaValue=Request(ParaName)
           If ParaType=1 then
            If not isNumeric(ParaValue) then
             Response.write "<br><br><br><center><font color=red>參數(shù)" & ParaName & "必須為數(shù)字型!"
             Response.end
            End if
           Else
            ParaValue=replace(ParaValue,"'","''")
           End if
           SafeRequest=ParaValue
          End function
          來源:
          http://www.yesky.com/305/1899305.shtml

          posted on 2006-02-05 10:23 my java 閱讀(642) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 万源市| 弋阳县| 福海县| 秀山| 浙江省| 清水河县| 磐石市| 南阳市| 东至县| 奈曼旗| 彭阳县| 阳东县| 五原县| 永昌县| 西华县| 灵台县| 重庆市| 天镇县| 栾川县| 印江| 福州市| 江陵县| 嘉黎县| 吐鲁番市| 金坛市| 定陶县| 宜君县| 霸州市| 徐汇区| 上蔡县| 北流市| 钟祥市| 清新县| 无棣县| 双鸭山市| 朝阳县| 津南区| 志丹县| 淮滨县| 松溪县| 灵武市|