【转载】C#防SQL注入过滤危险字符信息
程序员文章站
2023-10-19 17:46:36
不过是java开发还是C#开发或者PHP的开发中,都需要关注SQL注入攻击的安全性问题,为了保证客户端提交过来的数据不会产生SQL注入的风险,我们需要对接收的数据进行危险字符过滤来防范SQL注入攻击的危险,以下是C#防止SQL注入攻击的一个危险字符过滤函数,过滤掉相应的数据库关键字。 主要过滤两类字 ......
不过是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; }
备注:原文转载自c#防sql注入过滤危险字符信息_it技术小趣屋。