葡京网投哪个正规 > 联系我们 > 防注入函数,ASP支持嵌套模板

原标题:防注入函数,ASP支持嵌套模板

浏览次数:75 时间:2020-05-08

防注入函数

先是备份数据库,避防不必要的损失。而后对富有被挂马的小于8000字符的varchar字段施行复制代码 代码如下: update 表名 set 字段名=replace(字段名,'Script Src=%75clear3.com/css/c.js/Script',''卡塔尔(قطر‎此中Script Src=%75clear3.com/css/c.js/Script为挂马字段。实施后挂马字段被免去。可是有部分字段,比如剧情字段等超过8000字符的varchar字段则必要奉行复制代码 代码如下: update 表名 set 表项=replace(cast(表项 as varchar(8000卡塔尔(قطر‎卡塔尔,'Script Src= /Script ',''卡塔尔(قطر‎来更新被挂马字段,而房产网由于内容超级多,实行以上语句的时候会时有产生假死现象,于是加个区间分一回开展,二次拍卖15000条能够缓和。 复制代码 代码如下: update 表名 set 表项=replace(cast(表项 as varchar(8000卡塔尔卡塔尔(قطر‎,'Script Src= /Script ',''卡塔尔(قطر‎where id1 and id15000 以上被挂马难题日常都是sql数据库,那是sql数据库特有的流入漏洞。换数据库不具体,只可以针对上述气象开展防范。思路便是在具有数据库链接央浼这里做相应的过滤。 复制代码 代码如下: % Response.Buffer = True '缓存页面 '堤防get注入 If Request.QueryString "" Then StopInjection(Request.QueryStringState of Qatar '防止post注入 If Request.Form "" Then StopInjection(Request.FormState of Qatar '防守cookies注入 If Request.Cookies "" Then StopInjection(Request.Cookies卡塔尔(قطر‎ '正则子函数 Function StopInjection(ValuesState of Qatar Dim regEx Set regEx = New RegExp regEx.IgnoreCase = True regEx.Global = True regEx.Pattern = "'|;|#|([sb+()]+([email=select%7Cupdate%7Cinsert%7Cdelete%7Cdeclare%7C@%7Cexec%7Cdbcc%7Calter%7Cdrop%7Ccreate%7Cbackup%7Cif%7Celse%7Cend%7Cand%7Cor%7Cadd%7Cset%7Copen%7Cclose%7Cuse%7Cbegin%7Cretun%7Cas%7Cgo%7Cexists)[/s/b]select|update|insert|delete|declare|@|exec|dbcc|alter|drop|create|backup|if|else|end|and|or|add|set|open|close|use|begin|retun|as|go|exists)[sb[/email]+]*卡塔尔" Dim sItem, sValue For Each sItem In Values sValue = Values(sItem卡塔尔国 If regEx.Test(sValue卡塔尔 Then Response.Write "Script Language=javascriptalert('违规注入!你的作为已被记录!!'卡塔尔国;history.back(-1卡塔尔;/Script" Response.End End If Next Set regEx = Nothing End function % 做一个通用的sql防注入页面,把它包涵在conn.asp数据库连接语句里边,那样就落到实处了全站的严防 sql 注入的口诛笔伐了。然而前台的切近?id=那样的语句依然存在注入漏洞,要求大家严厉过滤 request.form 和 request.querystring 获取的开始和结果。坚决不用 request("name"State of Qatar那样的章程获取值,凡是利用 cookies 保存的剧情,尽量不要用在sql语句里打开查询数据库操作。 要是面生sqlserver的意中人能够用软件来得以完成sqlserver 数据库批量沟通工具(数据库及文件文件查找替换卡塔尔 v1.0中文松石绿版SQLServer 数据库批量招来替换工具1.2 SQL木马消逝助手

     此模板类是作者遵照实际付出供给开采的,参谋了广大互连网上的落实,并加以综合,力求言必有中、实用。 

Dim regEx, Match, Match2, Matches, Matches2Set regEx = New RegExpregEx.IgnoreCase = TrueregEx.Global = TrueregEx.MultiLine = True

 
<% 
Class Template 

If Request.QueryString Then Call StopInjection(Request.QueryString)If Request.Cookies Then Call StopInjection(Request.Cookies)

Private m_content,m_looptmp,tagData,loopdata,m_loop_content,m_Looptag,m_TplPath,m_SetTplPath 

Sub StopInjection(Values) Dim FoundInjection regEx.Pattern = '|;|#|([/s/b+()]+(select|update|insert|delete|declare|@|exec|dbcc|alter|drop|create|backup|if|else|end|and|or|add|set|open|close|use|begin|retun|as|go|exists)[/s/b+]*卡塔尔国Dim sItem, sValue For Each sItem In Values sValue = Values(sItem卡塔尔 If regEx.Test(sValue卡塔尔(قطر‎ Then FoundInjection = True Response.Write 很对不起,由于您提交的剧情中包涵危急的SQL注入代码,诱致此次操作无效! Response.Write br字段名: sItem Response.Write br字段值: sValue Response.Write br关键字: Set Matches = regEx.Execute(sValueState of Qatar For Each Match In Matches Response.Write FilterJS(Match.value卡塔尔国 Next Response.Write brbr假诺您是健康提交仍现身上边的提示,请联系站长改过Config.asp文件的第7行,权且禁止使用掉防SQL注入效率,操作达成后再张开。 End If Next If FoundInjection = True Then Response.End End IfEnd Sub

Private m_ClassName,m_Version,m_Copyright 

Private Sub Class_Initialize() 
   m_content="" : m_looptmp="" : m_loop_content="" : m_looptag=""
   m_ClassName="Shaoyun ASP Template类" : m_Version="1.0" : m_Copyright="DevJS.com"
   m_TplPath="./" : m_SetTplPath=false 

  Set tagData = Server.CreateObject("Scripting.Dictionary") 
  Set loopData = Server.CreateObject("Scripting.Dictionary") 
End Sub

Private Sub Class_Terminate() 
   m_content="" : m_looptmp="" : m_loop_content="" : m_looptag=""
   m_TplPath="./" : m_SetTplPath=false 

  Set tagData = Nothing : Set loopData = Nothing
End Sub

Public Property Get ClassName 
   ClassName = m_ClassName 
End Property

Public Property Get Version 
   Version = m_Version 
End Property

Public Property Get Copyright 
   Copyright = m_Copyright 
End Property

Rem 模板类的暗许属性,剖断模板中是还是不是含有那一个标签 
Public Default Property Get Tag(tagname) 

   Tag = InStr(m_content,"{$" & tagname & "$")>0 
End Property

Rem 调用定义好的赋值函数,那一个性情用来简化赋值操作 
Public Property Let Tag(tagname,replaceString) 
  Call Assign(tagname,replaceString) 

End Property

Public Property Get TplPath 
   TplPath = m_TplPath 
End Property

Rem 设定模板文件的路线 
Public Property Let TplPath(sTplPath) 

  If sTplPath<>"" Then m_TplPath = sTplPath 
  If Right(m_TplPath,1)<>"/" Then m_TplPath = m_TplPath & "/"
End Property

Private Function LoadFromFile(sFilePath,sCharset) 
   LoadFromFile=false 
  Dim oStream 
  Set oStream=Server.CreateObject("ADODB.Stream") 
   oStream.Type=2 
   oStream.Mode=3 
   oStream.Open 
   oStream.Charset=sCharset 
   oStream.Position=oStream.Size 

   oStream.LoadFromFile sFilePath 

   LoadFromFile=oStream.ReadText 

   oStream.Close 
  Set oStream=Nothing
End Function

Private Function FileExist(filespec) 

  On Error Resume Next
   FileExist=False
  Dim oFSO : Set oFSO = Server.CreateObject("Scripting.FileSystemObject") 
   FileExist=oFSO.FileExists(filespec) 

  Set oFSO=Nothing
End Function

Rem 获取循环块 
Private Function GetTmpStr(tplstr,tagname,attname) 
  Dim regEx,Matches,Match 
  Set regEx = New RegExp 
   regEx.Pattern = "<" & tagname & ".*?s+name=[""|']?" & attname & "[""|']?.*?>([sS.]*?)</" & tagname & ">" 

   regEx.Global = False
   regEx.IgnoreCase = True
  Set Matches = regEx.Execute(tplstr) 

  For Each Match in Matches 
   GetTmpStr=Match.Value 
  Next
  Set regEx = Nothing  
End Function

Rem 移除HTML标记 
Private Function RemoveTag(tagString,tagname) 
  Dim regex 
  Set regex=New RegExp 
   regEx.Pattern = "<[/]?" & tagname & ".*?>"
   regEx.Global = True
   regEx.IgnoreCase = True
   RemoveTag = regEx.Replace(tagString,"") 
  Set regex=nothing  
End Function

Rem 移除空白行 
Private Function RemoveSpace(tagString) 

  Dim regex 
  Set regex=New RegExp 
   regEx.Pattern = "ns*r"
   regEx.Global = True
   regEx.IgnoreCase = True
   RemoveSpace = regEx.Replace(tagString,"") 
  Set regex=nothing  
End Function

Rem 读取模板文件,同一时候管理嵌套模板,举办模板的合并 
Public Function LoadTpl(tplfile) 

   tplfile=Server.MapPath(tplfile) 

  If Not FileExist(tplfile) Then
     Response.Write "Load template file faild!"
     Response.End
    Exit Function
  End If
   m_content=LoadFromFile(tplfile,"GB2312") 
  Dim regEx,Matches,Match,fname,sContent 

  Set regEx = New RegExp 
   regEx.Pattern = "{$include:(.*?)$}"
   regEx.Global = True
   regEx.IgnoreCase = True
  Set Matches = regEx.Execute(m_content) 

  For Each Match in Matches 
     fname=Match.SubMatches(0) 
     fname=Server.MapPath(m_TplPath & fname) 
    If FileExist(fname) Then
       sContent=LoadFromFile(fname,"GB2312") 
       m_content=replace(m_content,Match.value,sContent) 
    End If
  Next
  Set regEx = Nothing
End Function

Rem 赋值替换函数 
Public Function Assign(tagname,replaceString) 
  If tagname="" Then Exit Function

   Rem 要是是循环标签 
  If InStr(tagname,"/")>0 and InStr(tagname,"/")<Len(tagname) Then
     Rem 获取循环标签字称 
     m_curLooptag=Left(tagname,InStrRev(tagname,"/")-1) 
    If m_Looptag="" Then
       Rem 若是是首先次检查测量检验到循环标签,设置循环所需变量开首值 
       m_looptag=m_curLooptag : m_loop_content=""
       m_looptmp=GetTmpStr(m_content,"loop",m_Looptag) 
    Else
      If m_LoopTag<>m_curLooptag Then
         Rem 要是循环标签改造,开始循环变量 
         m_content=replace(m_content,m_looptmp,m_loop_content) 
         m_looptag=m_curLooptag : m_loop_content=""
         m_looptmp=GetTmpStr(m_content,"loop",m_Looptag) 
      End If
    End If
    If Not(loopData.Exists(tagname)) Then loopData.Add tagname,replaceString 
  Else
     Rem 普通标签 
     tagData.Add tagname,replaceString 

  End If
End Function

Rem 试行块内替换 
Public Function Flush() 
  If loopdata.count>0 then 
    Dim i 
     chgtmp=RemoveTag(m_looptmp,"loop") 

     arrtag=loopData.keys 
     arrval=loopData.items 
    For i=0 To loopData.count-1 
       chgtmp=replace(chgtmp,"{$" & arrtag(i) & "$}",arrval(i)) 
    Next
     Rem 将块内数据保存到变量中 
     m_loop_content=m_loop_content & chgtmp 
     loopdata.RemoveAll 
  End if 
End Function

Rem 营造,完毕模板的末尾替换 
Public Function Bulid() 
   m_content=replace(m_content,m_looptmp,m_loop_content) 
   arrtag=tagData.keys 
   arrval=tagData.items 
  For i=0 To tagData.count-1 
     m_content=replace(m_content,"{$" & arrtag(i) & "$}",arrval(i)) 
  Next
   m_Content=RemoveSpace(m_Content) 

   Response.Write m_Content 
End Function

End Class
%>

     我是做电话录音系统做事的,那么些仅是自己的业余爱好,希望大家有啥意见尽快建议,是笔者得以修正,感谢!

本文由葡京网投哪个正规发布于联系我们,转载请注明出处:防注入函数,ASP支持嵌套模板

关键词:

上一篇:没有了

下一篇:用户及角色管理示例,为数据库指定单独用户名