Global.asax 验证参数是否安全 sql注入
作者:朱尚 / 日期:2013-12-10 / 分类:Asp.Net / 浏览:1312
<%@ Application Language="C#" %>
 
<script runat="server">
 
    void Application_Start(object sender, EventArgs e)
    {
        //在应用程序启动时运行的代码
 
    }
 
    void Application_End(object sender, EventArgs e)
    {
        //在应用程序关闭时运行的代码
 
    }
 
    void Application_Error(object sender, EventArgs e)
    {
        //在出现未处理的错误时运行的代码
 
    }
 
    void Session_Start(object sender, EventArgs e)
    {
        //在新会话启动时运行的代码
 
 
    }
 
    void Session_End(object sender, EventArgs e)
    {
        //在会话结束时运行的代码。 
        // 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为 
        // InProc 时,才会引发 Session_End 事件。如果会话模式 
        //设置为 StateServer 或 SQLServer,则不会引发该事件。
 
    }
    /// <summary> 
    /// 当有数据时交时,触发事件 
    /// </summary> 
    /// <param name="sender"> </param> 
    /// <param name="e"> </param> 
    protected void Application_BeginRequest(Object sender, EventArgs e)
    {
        //遍历Post参数,隐藏域除外 
        foreach (string i in this.Request.Form)
        {
            if (i == "__VIEWSTATE") continue;
            this.goErr(this.Request.Form[i].ToString());
        }
        //遍历Get参数。 
        foreach (string i in this.Request.QueryString)
        {
            this.goErr(this.Request.QueryString[i].ToString());
        }
        //cookie参数 
        if (Request.Cookies != null)
        {
            for (int i = 0; i < Request.Cookies.Count; i++)
            {
                this.goErr(Request.Cookies[Request.Cookies.Keys[i]].Value);
            }
        }
    }
 
    /// <summary> 
    ///SQL注入过滤 
    /// </summary> 
    /// <param name="InText">要过滤的字符串 </param> 
    /// <returns>如果参数存在不安全字符,则返回true </returns> 
    public bool SqlFilter(string InText)
    {
        //Response.Write(InText); 
        string word = "and|exec|insert|select|delete|update|chr|mid|master|or|truncate|char|declare|join|cmd|;|'|--";//这里加要过滤的SQL字符 
        if (InText == null)
            return false;
        foreach (string i in word.Split('|'))
        {
            if (InText.ToLower().IndexOf(i) > -1)
            {
                return true;
            }
        }
        return false;
    }
 
    /// <summary> 
    /// 校验参数是否存在SQL字符 
    /// </summary> 
    /// <param name="tm"> </param> 
    private void goErr(string tm)
    {
        if (SqlFilter(tm))
        {
            //Response.Write(" <script>window.alert('参数存在不安全字符');" + " </" + "script>");
            Response.Write("参数存在不安全字符!");
            System.Web.HttpContext.Current.Response.End();
        }
    }
 
</script>
 
上一篇:config 设置最大上传值
下一篇:Response.Write window.open 用法
本文标签: Global用法 sql注入
本文链接:http://www.banzhuan.net/detail/57