linxihuanghuang

导航

防SQL注入

在一个登录界面,有时候会有人恶意进行SQL攻击,比如输入用户名,密码的时候在用户名里面输入“1 or 1=1 ' -- ”,密码随意输入。

所以一般在程序里面要防止这种攻击,采取的方式为:

        //过滤特征字符
        private const string StrKeyWord = @"select|insert|delete|from|count(|drop table|update|truncate|asc(|mid(|char(|xp_cmdshell|exec|master|net local group administrators|net user|or|and";
        private const string StrRegex = @"-|;|,|/|(|)|[|]|{|}|%|@|*|'|!";

        ///<summary>
        ///检查字符串中是否包含Sql注入关键字
        /// <param name="_key">被检查的字符串</param>
        /// <returns>如果包含注入true;否则返回false</returns>
        ///</summary>
        private bool CheckKeyWord(string _key)
        {
            string[] pattenString = StrKeyWord.Split('|');
            string[] pattenRegex = StrRegex.Split('|');
            foreach (string sqlParam in pattenString)
            {
                if (_key.Contains(sqlParam + " ") || _key.Contains(" " + sqlParam))
                {
                    return true;
                }
            }
            foreach (string sqlParam in pattenRegex)
            {
                if (_key.Contains(sqlParam))
                {
                    return true;
                }
            }
            return false;
        }

 

posted on 2014-05-29 16:59  linxihuanghuang  阅读(188)  评论(0编辑  收藏  举报