当前位置: 移动技术网 > IT编程>开发语言>.net > 【转载】C#防SQL注入过滤危险字符信息

【转载】C#防SQL注入过滤危险字符信息

2019年03月25日  | 移动技术网IT编程  | 我要评论

不过是java开发还是c#开发或者php的开发中,都需要关注sql注入攻击的安全性问题,为了保证客户端提交过来的数据不会产生sql注入的风险,我们需要对接收的数据进行危险字符过滤来防范sql注入攻击的危险,以下是c#防止sql注入攻击的一个危险字符过滤函数,过滤掉相应的数据库关键字。

主要过滤两类字符:(1)一些sql中的标点符号,如@,*以及单引号等等;(2)过滤数据库关键字select、insert、delete from、drop table、truncate、mid、delete、update、truncate、declare、master、script、exec、net user、drop等关键字或者关键词。

封装好的方法如下:

  

 public static string replacesqlchar(string str)
        {
            if (str == string.empty)
                return string.empty;
            str = str.replace("'", "");
            str = str.replace(";", "");
            str = str.replace(",", "");
            str = str.replace("?", "");
            str = str.replace("<", "");
            str = str.replace(">", "");
            str = str.replace("(", "");
            str = str.replace(")", "");
            str = str.replace("@", "");
            str = str.replace("=", "");
            str = str.replace("+", "");
            str = str.replace("*", "");
            str = str.replace("&", "");
            str = str.replace("#", "");
            str = str.replace("%", "");
            str = str.replace("$", "");

            //删除与数据库相关的词
            str = regex.replace(str, "select", "", regexoptions.ignorecase);
            str = regex.replace(str, "insert", "", regexoptions.ignorecase);
            str = regex.replace(str, "delete from", "", regexoptions.ignorecase);
            str = regex.replace(str, "count", "", regexoptions.ignorecase);
            str = regex.replace(str, "drop table", "", regexoptions.ignorecase);
            str = regex.replace(str, "truncate", "", regexoptions.ignorecase);
            str = regex.replace(str, "asc", "", regexoptions.ignorecase);
            str = regex.replace(str, "mid", "", regexoptions.ignorecase);
            str = regex.replace(str, "char", "", regexoptions.ignorecase);
            str = regex.replace(str, "xp_cmdshell", "", regexoptions.ignorecase);
            str = regex.replace(str, "exec master", "", regexoptions.ignorecase);
            str = regex.replace(str, "net localgroup administrators", "", regexoptions.ignorecase);
            str = regex.replace(str, "and", "", regexoptions.ignorecase);
            str = regex.replace(str, "net user", "", regexoptions.ignorecase);
            str = regex.replace(str, "or", "", regexoptions.ignorecase);
            str = regex.replace(str, "net", "", regexoptions.ignorecase);
            str = regex.replace(str, "-", "", regexoptions.ignorecase);
            str = regex.replace(str, "delete", "", regexoptions.ignorecase);
            str = regex.replace(str, "drop", "", regexoptions.ignorecase);
            str = regex.replace(str, "script", "", regexoptions.ignorecase);
            str = regex.replace(str, "update", "", regexoptions.ignorecase);
            str = regex.replace(str, "and", "", regexoptions.ignorecase);
            str = regex.replace(str, "chr", "", regexoptions.ignorecase);    
            str = regex.replace(str, "master", "", regexoptions.ignorecase);
            str = regex.replace(str, "truncate", "", regexoptions.ignorecase);
            str = regex.replace(str, "declare", "", regexoptions.ignorecase);
            str = regex.replace(str, "mid", "", regexoptions.ignorecase);

            return str;
        }

 

备注:原文转载自。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网