Asp利用正则表达式防止SQL注入的代码

SQL注入是黑客常用的攻击方式,下面介绍如何利用正则表达式编写通用的SQL防注入asp程序。一般的http请求不外乎get和post,所以只要我们在asp文件中过滤所有post或者get请求中的参数信息中非法字符即可,我们实现http请求信息过滤就可以判断是是否受到SQL注入攻击。

在连接数据库的Conn.asp文件中加入以下代码:


<%
Response.Buffer = True
Const EnableStopInjection = True
If EnableStopInjection = True Then
    If Request.QueryString <> "" Then Call StopInjection(Request.QueryString)
    If Request.Cookies <> "" Then Call StopInjection(Request.Cookies)
    If Request.Form <> "" Then Call StopInjection(Request.Form)
End If

Sub StopInjection(Values)
Dim regEx
Set regEx = New RegExp
    regEx.IgnoreCase = True
    regEx.Global = True
    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
            Response.Write "检测到SQL注入危险, 请确认你提交的信息不含有危险信息并清空IE缓存,重新提交信息。"
            Response.End
        End If
    Next
    Set regEx = Nothing
End Sub
%>


注:regEx.Pattern中的值根据你的需要设置,如设置不当,则一般提交的信息也会提示有SQL注入。

[本日志由 cnfgg 于 2009-08-25 02:29 PM 编辑]
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: Asp 正则表达式 函数
相关日志:
评论: 0 | 引用: 0 | 查看次数: -
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.