防SQL 注入是一个系统工程,在项目开发中就要系统的考虑SQL 注入的问题。一般做到以下4点,能比较好的控制SQL 注入:
- 严格验证用户的一切输入,包括URL参数。
- 将用户登录名称、密码等数据加密保存
- 不要用拼接字符串的方式来生成SQL语句,而是用SQL Parameters 传参数或者用存储过程来查询
- 严格验证上传文件的后缀,exe、aspx、asp等可执行程序禁止上传。
这里介绍一个简单通用的方法,用来验证字符串中是否有敏感字符,参数可以是一个字符串,也可以是一个字符串集合,敏感字符可以在Lawlesses数组中定义:
- public static string[] Lawlesses = { "=", "'" };
- /// <summary>
- /// 敏感字符检测
- /// </summary>
- /// <param name="args"></param>
- /// <returns></returns>
- public static bool CheckParams(params object[] args)
- {
- 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;
- }
参考文档:http://msdn.microsoft.com/zh-cn/library/ms998271(en-us).aspx
Copyright playgoogle.com© 2008
继续阅读《ASP.NET中如何防SQL注入》的全文内容...
相关文章:
最新评论:
分享到:
相关推荐
Asp.Net通用Sql防注入源码 Asp.Net程序员预防程序被sql注入攻击的必备知识.
asp.net简单防范sql注入漏洞 防止 sql注入攻击 1 限制 文本框的最大长度 2 删除用户的单引号 3 处理sql注入的另外一个方法是 使用ado.net command对象的参数集合。 而不是评接多个字符串
防SQL注入DEMO,防SQL注入DEMO,防SQL注入DEMO
ASPXSQL凌讯ASP.NET通用防SQL注入脚本系统 v3.0
针对ASP.NET(vb.net)下防SQL注入脚
ASP.NET中如何防范SQL注入式攻击 自己看,共3页,感觉还是有点用处
常用的asp.net的SQL防注入过滤函数大集合,实用性很高! 执行效率不错!
ASP.NET网站防SQL注入的方法研究.pdf
本文主要针对目前ASP.NET 网站安全面临的SQL注入攻击来进行分析研究,并从客户端和服务器端两个方面来研究如何防范SQL注入攻击。
ASP.NET防SQL注入脚本程序 ASP.NET防SQL注入脚本程序
详细的介绍了防止sql注入攻击,内附asp.net 源码和vb.net源码。是初学者不错的选择。希望能够帮助到你。
ASP.NET源码——通用防SQL注入漏洞程序(Global.asax方式).zip
【ASP.NET编程知识】ASP.NET过滤类SqlFilter,防止SQL注入 .docx
简单的asp.net登陆sql防注入功能是由一个if语句实现
ASP.NET下如何防范SQL注入式攻击
防SQL注入脚本防SQL注入脚本防SQL注入脚本防SQL注入脚本防SQL注入脚本防SQL注入脚本防SQL注入脚本防SQL注入脚本防SQL注入脚本防SQL注入脚本防SQL注入脚本防SQL注入脚本防SQL注入脚本防SQL注入脚本防SQL注入脚本防SQL...
protected void Application_BeginRequest(object sender, EventArgs e) { //遍历Post参数,隐藏域除外 foreach (string i in this.Request.Form) { if (i == "__VIEWSTATE") continue; this.goErr(this....
本程序采用.NET2.0 + WinXP + SQL2000/Access2003 + C# 开发。 V1.0版本与2009.8.18日推出。 V2.0版本与2009.9.10日推出,将代码集成类中,方便调用。 V3.0版本修正2.0版本Cookies参数Bug,增加了封锁IP功能,...
ASP.NET中防范SQL注入式攻击研究.pdf