using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.IO;
using System.Text;
using System.Web.UI.MobileControls;
using System.Collections.Generic;
/// <summary>
///SQLFilter 的摘要说明
/// </summary>
public static class SQLFilter
{
#region SQL注入过滤
/// <summary>
/// SQL注入过滤
/// </summary>
/// <param name="sqlParems">要过滤的参数数组</param>
/// <returns>如果参数存在不安全字符,则返回false</returns>
public static bool SqlFilter(string[] sqlParems, Page p)
{
StringBuilder parems = new StringBuilder();
//常用的SQL恶意字符屏蔽
string sql = "insert|delete|update|select|exec|script";
try
{
//获取配置在Web.config中最新的SQL恶意字符屏蔽
sql = System.Configuration.ConfigurationSettings.AppSettings["SQLFilter"].ToString();
}
catch (Exception)
{
//对于配置文件的错误配置,将采用常用的SQL恶意字符屏蔽
sql = "insert|delete|update|select|exec|script";
}
foreach (string var in SetAllsqlParems(sqlParems,p))
{
foreach (string i in sql.Split('|'))
{
if (var.IndexOf(i.ToLower()) > -1)
{
try
{
//创建非法记录日志
using (FileStream file = new FileStream(System.Web.HttpContext.Current.Server.MapPath("~\\" + DateTime.Now.ToString("yyyy年MM月dd日") + "非法数据记录.txt"), FileMode.Append))
{
StreamWriter sw = new StreamWriter(file);
foreach (string value in SetAllsqlParems(sqlParems, p))
{
parems.Append(" [" + value + "] ");
}
sw.WriteLine(DateTime.Now.ToString("HH:mm:ss") + " IP:[" + p.Request.UserHostAddress + "] 原始URL:[" + p.Request.Url + "] 非法字符:[" + var + ":" + i + "] 全部参数:" + parems.ToString());
sw.WriteLine();
sw.Close();
file.Close();
}
}
catch (Exception) { }
return false;
}
}
}
return true;
}
#endregion
#region 需要校验的数据集合整理
public static string[] SetAllsqlParems(string[] sqlParems, Page p)
{
List<string> list = new List<string>();
if (sqlParems != null)
{
foreach (string var in sqlParems)
{
if (var == null || var.Equals(""))
{}
else
{
list.Add(var.Trim().ToLower());
}
}
}
foreach (Control var in p.Form.Controls)
{
if (var.GetType() == typeof(System.Web.UI.WebControls.TextBox))
{
string text = ((System.Web.UI.WebControls.TextBox)var).Text.Trim().ToLower();
if (text == null || text.Equals(""))
{}
else
{
list.Add(text);
}
}
}
return list.ToArray();
}
#endregion
}
// 应用示例
// if(TheManagerUtils.SqlFilter(new string[] { "userName","pass;delete" }, this.Page) == false)
// {
// //直接跳转到相应的错误页面
// Response.Redirect("WelfarePage.aspx");
// return;
// }
// if(TheManagerUtils.SqlFilter(null, this.Page) == false)
// {
// //直接跳转到相应的错误页面
// Response.Redirect("WelfarePage.aspx");
// return;
// }
分享到:
相关推荐
一套基于ASP.NET的OA系统,看文件大小就知道分量了!
一套基于ASP.NET+C#开发的Dnnlite CMS系统源程序代码。
HDLabBBS 是一套基于 ASP.NET Web 技术设计开发的论坛系 统
一套基于ASP.NET的简单三层图书管理系统源码
一套基于ASP.NET+Extjs技术实现的简单版酒店管理系统。
一套基于ASP.NET+C#实现的双鱼林员工绩效信息管理系统源码例子
一套优秀的基于ASP.NET+C#开发的Discuz!NT2.6开放式社区平台源码,非常成熟、安全、稳定,值得推荐!
本项目是一套基于ASP.NET的C#学生信息管理系统,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的C#学习者。也可作为课程设计、期末大作业。 包含:项目源码、数据库脚本等,该项目也可以直接作为毕设...
基于ASP.NET开发的简单购物车源码!大家互相学习与交流!!!!!!!!!!!!
Ext.NET是基于.NET Framework 3.5的一套支持ASP.NET AJAX的Web控件,它基于跨浏览器的ExtJS 库开发而来并简化了开发步骤,包含有丰富的Ajax运用。 Ext.NET是开源的。由于Ext.NET基于ExtJS的缘故,所以不可避免会有...
HDLabBBS 是一套基于 ASP.NET Web 技术设计开发的论坛系 统,它是一个经过完善设计,适用于WindowsNT+.Net环境的高效.-HDLabBBS NET是一套基于Web技术的设计和开发的论坛,经过完美的设计后,适用于Windows NT的高效...
UCenter.NET是由CN.Dotnet组织开发的一套基于微软.NET平台的Social Network Software(SNS)系统,它不仅免费而且完全开源。该项目将会用到许多微软的最新开发技术,如ASP.NET MVC、Silverlight、LINQ、WCF、Unity、...
一套综合控件源码,采用VS2005+C#+ASP.NET开发
采用VS2005+C#+ASP.NET开发,通用查询自定义控件,功能强大,可以自定义查询数据源,包括查询字段,操作符,数据源可以是XML,也可以是个人数据库等。
本项目是一套基于ASP.NET的综合教务管理系统,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的C#学习者。也可作为课程设计、期末大作业。 包含:项目源码、数据库脚本等,该项目可以直接作为毕设使用...
本资源提供了一套基于ASP.NET和C#的Web应用程序设计源码,包含177个文件,其中包括60个配置文件,53个C#源代码文件,17个ASPX页面文件,15个解决方案文件(.sln),15个项目文件(.csproj),10个JPEG图片文件,以及...
本项目是一套基于ASP.NET的土地利用管理系统,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的C#学习者。也可作为课程设计、期末大作业。 包含:项目源码、数据库脚本、软件工具、项目说明等,该项目...
基于ASP.NET购物商城 基于ASP.NET购物商城 基于ASP.NET购物商城 基于ASP.NET购物商城 基于ASP.NET购物商城 基于ASP.NET购物商城 基于ASP.NET购物商城 基于ASP.NET购物商城 基于ASP.NET购物商城 基于ASP.NET购物商城