首页  ·  知识 ·  编程语言
防止SQL注入
网友  博客园 http://www.cnblogs.com/fengzhenxin1984/archive/2009/08/11/1543444.html  .NET  编辑:德仔   图片来源:网络
SQL注入式攻击代码分析#region SQL注入式攻击代码分析 /**//// lt;summarygt;
SQL注入式攻击代码分析#region SQL注入式攻击代码分析
    /**////  <summary>
    /// 处理用户提交的请求
    ///  </summary>
    private void StartProcessRequest()
    {
      
            string getkeys = "";
            string sqlErrorPage = "web_error.aspx";//转向的错误提示页面
        if (System.Web.HttpContext.Current.Request.QueryString != null)
        {
            for (int i = 0; i < System.Web.HttpContext.Current.Request.QueryString.Count; i++)
            {
                getkeys = System.Web.HttpContext.Current.Request.QueryString.Keys[i];
                if (!ProcessSqlStr(System.Web.HttpContext.Current.Request.QueryString[getkeys]))
                {
                    //System.Web.HttpContext.Current.Response.Redirect(sqlErrorPage + "?code=1&str=" + System.Web.HttpContext.Current.Request.QueryString[getkeys]);
                    System.Web.HttpContext.Current.Response.Redirect(sqlErrorPage + "?code=1&str=InvalidRequest");
                    return;
                    //System.Web.HttpContext.Current.Response.End();
                }
            }
        }
          
    }
    /**////  <summary>
    /// 分析用户请求是否正常
    ///  </summary>
    ///  <param name="Str">传入用户提交数据 </param>
    ///  <returns>返回是否含有SQL注入式攻击代码 </returns>
    private bool ProcessSqlStr(string Str)
    {
        bool ReturnValue = true;
        try
        {
            if (Str.Trim() != "")
            {
                string SqlStr = "and ¦exec ¦insert ¦select ¦delete ¦update ¦count ¦*  ¦' ¦chr ¦mid ¦master ¦truncate ¦char ¦declare";
                string[] anySqlStr = SqlStr.Split('¦');
                foreach (string ss in anySqlStr)
                {
                    if (Str.ToLower().IndexOf(ss.Trim()) >= 0)
                    {
                        ReturnValue = false;
                        break;
                    }
                }
            }
        }
        catch
        {
            ReturnValue = false;
        }
        return ReturnValue;
    }
    #endregion
本文作者:网友 来源:博客园 http://www.cnblogs.com/fengzhenxin1984/archive/2009/08/11/1543444.html
CIO之家 www.ciozj.com 微信公众号:imciow
   
免责声明:本站转载此文章旨在分享信息,不代表对其内容的完全认同。文章来源已尽可能注明,若涉及版权问题,请及时与我们联系,我们将积极配合处理。同时,我们无法对文章内容的真实性、准确性及完整性进行完全保证,对于因文章内容而产生的任何后果,本账号不承担法律责任。转载仅出于传播目的,读者应自行对内容进行核实与判断。请谨慎参考文章信息,一切责任由读者自行承担。
延伸阅读