参数校验 防止SQL注射攻击一

browser_pb Flock 推荐
/// <summary>

        /// 参数校验 防止SQL注射攻击一

        /// 调用:object [] args = new object[6]{realname,address,areacode,contacttel,email,proviceid};

        ///    if(!BaseCheck.CheckParams(args))

        ///    {

        ///        Common.ShowDsMsg("您输入的内容不能通过");

        ///        return;

        ///    }

        /// </summary>

        /// <param name="args"></param>

        /// <returns></returns>

        public static bool CheckParams(params object[] args)

        {

            string[] Lawlesses={"=","'"};

            if(Lawlesses==null||Lawlesses.Length<=0)return true; //构造正则表达式,

            //例:Lawlesses是=号和'号,则正则表达式为 .*[=|'].* (由于是想做通用而且容易修改的函数,所以多了一步由字符数组到正则表达式,实际使用中,直接写正则表达式亦可;

            string str_Regex=".*[";

            for(int i=0;i< Lawlesses.Length-1;i++)

                str_Regex+=Lawlesses[i]+"|";

            str_Regex+=Lawlesses[Lawlesses.Length-1]+"].*";

            foreach(object arg in args)

            {

                if(arg is string)//如果是字符串,直接检查

                {

                    if(Regex.Matches(arg.ToString(),str_Regex).Count>0)

                        return false;

                }

                else if(arg is ICollection)//如果是一个集合,则检查集合内元素是否字符串,是字符串,就进行检查

                {

                    foreach(object obj in (ICollection)arg)

                    {

                        if(obj is string)

                        {

                            if(Regex.Matches(obj.ToString(),str_Regex).Count>0)

                                return false;

                        }

                    }

                }

            }

            return true;

        }

你可能感兴趣的:(sql)