博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【转载】C#防SQL注入过滤危险字符信息
阅读量:4884 次
发布时间:2019-06-11

本文共 3262 字,大约阅读时间需要 10 分钟。

不过是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;        }

 

备注:原文转载自。

转载于:https://www.cnblogs.com/xu-yi/p/10587889.html

你可能感兴趣的文章
剑指offer——python【第29题】最小的K个数
查看>>
带你入门代理模式/SpringAop的运行机制
查看>>
eclipse对离线python的环境搭建
查看>>
OpenCV imshow无法显示图片
查看>>
js线程&定时器
查看>>
java.lang.IllegalStateException: getOutputStream() has already been cal
查看>>
Ubuntu下搜狗输入法乱码
查看>>
计算机网络●通信协议
查看>>
在EditPlus里配置编译和运行java代码的方法
查看>>
gson所需jar包
查看>>
最干净的pyinstaller打包成exe应用程序方法
查看>>
Python中的数据类型
查看>>
讲给普通人听的分布式数据存储【转载】
查看>>
关于最短路
查看>>
Hbase记录-zookeeper部署
查看>>
Python pexpect出现错误‘module have no attribute "spawn" 解决办法
查看>>
vs2008 C# 怎么调试C++ dll[转]
查看>>
PHP的魔术方法
查看>>
警惕麦咖啡的"缓冲区溢出保护"引起的ASP.NET 中 System.OutOfMemoryException 的错误...
查看>>
optimizer_dynamic_sampling
查看>>