龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 数据库类 > Sql Server开发 >

防注入函数

时间:2013-01-03 18:08来源:未知 作者:admin 点击:
分享到:
防注入函数 Dim regEx, Match, Match2, Matches, Matches2 Set regEx = New RegExp regEx.IgnoreCase = True regEx.Global = True regEx.MultiLine = True If Request.QueryString Then Call StopInjection(Request.QueryString) If Request.Cookies The

防注入函数

Dim regEx, Match, Match2, Matches, Matches2
Set regEx = New RegExp
regEx.IgnoreCase = True
regEx.Global = True
regEx.MultiLine = True

If Request.QueryString <> "" Then Call StopInjection(Request.QueryString)
If Request.Cookies <> "" Then Call StopInjection(Request.Cookies)

Sub StopInjection(Values)
    Dim FoundInjection
    regEx.Pattern = "'|;|#|([sb+()]+(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+]*)"
    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(sValue)
            For Each Match In Matches
                Response.Write FilterJS(Match.value)
            Next
            Response.Write "<br><br>如果您是正常提交仍出现上面的提示,请联系站长修改Config.asp文件的第7行,暂时禁用掉防SQL注入功能,操作完成后再打开。"
                    
        End If
    Next
    If FoundInjection = True Then
        Response.End
    End If
End Sub


精彩图集

赞助商链接