C# 检查字符串,防SQL注入攻击
C# 检查字符串,防SQL注入攻击
这些天,CSDN上讨论SQL注入攻击似乎是如火如荼啊...我也来参合一下..如下,CheckParams函数,接收参数任意,如参数中有字符串,则对字符串进行检查,如参数中有集合(如Array之类,总之是实现了ICollection的),则对集合中的字符串元素进行检查.大家可根据具体情况来定要过滤的字符,我这个例子里暂定为=号和’号,实际上我个人认为,过滤了这两个,似乎要进行SQL注入就已经比较困难了,当然,我对SQL是菜鸟,欢迎高手指正,谢谢. C# Code: bool CheckParams(params object[] args) { string[] Lawlesses={"=","’"}; if(Lawlesses==null||Lawlesses.Length<=0)return true; //构造正则表达式, 例:Lawlesses是=号和’号,则正则表达式为 .*[=}’].* (正则表达式相关内容请见MSDN) 另外,由于我是想做通用而且容易修改的函数,所以多了一步由字符数组到正则表达式,实际使用中,直接写正则表达式亦可; 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;} //来源:C/S框架网 | www.csframework.com | QQ:23404761
参考文档:
SQL注入攻击的原理及其防范措施 SQL连接字符串设置连接池 C#.NET史上最全字符串加密/解密/数字签名工具(CryptoHelper.cs) C#.NET 对象(字符串)转换常用扩展方法 C#.NET 定义动态对象dynamic以及转换JSON字符串 C#日期类型转换工具(时间戳,字符串,long,byte类型互转) SQL判断两个带有分隔符的字符串是否重叠 C# WebApi将查询字符串RequestUri.Query解析转换为Hashtable C#SQL注入攻击检查类SQLInjection C#正则表达式查找或替换指定字符串(标识)范围的内容 C#使用分词算法从文本字符串中抽取关键词模拟百度搜索|CSFramework.COM巨献 SQLServer连接字符串连接池详解,Pooling=True/False区别 C#类扩展方法,字符串对象转换,常用扩展方法StringExtensions C# GUID序列号转换生成唯一的16位短字符串或19位长数字序号 C# 动态组合SQL脚本LIKE语句及查询参数防SQL注入攻击
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 | |