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 MVC 3的企业应用项目总结 #### 一、项目背景与概况 本项目是一次采用ASP.NET MVC 3框架构建的企业级应用程序的开发经历。项目历时约三个月,期间不仅实现了功能需求,还克服了诸多技术挑战。作为...
ASP.NET 是微软公司推出的一种Web应用程序开发框架,它基于.NET Framework,旨在简化Web开发过程,提供高效、安全、可扩展的网站解决方案。在这个"asp.net 供求信息网"项目中,我们可以深入探讨ASP.NET在构建一个...
本项目基于ASP.NET技术开发了一套考勤管理系统,旨在为企业提供一个高效、准确的考勤解决方案。 #### 二、系统功能需求分析 ##### 2.1 基础功能 1. **员工信息管理**:包括新增员工、修改员工信息、删除员工等操作...
ASP.NET 后台通用权限系统源码是一套基于C#编程语言开发的高效、完整的权限管理系统。该系统设计的核心目标是实现对后台操作的精细控制,确保系统的安全性和稳定性。通过对用户、角色、操作和资源的权限管理,系统...
9. 验证与授权:ASP.NET Core MVC提供了强大的验证机制,可以对用户输入进行校验。同时,通过身份验证和授权,可以控制对特定资源的访问权限。 10. 测试与调试:该框架支持单元测试和集成测试,使得开发者能够轻松...
ASP.NET是微软公司推出的Web应用程序开发框架,以其高效、安全、易于维护的特点深受开发者喜爱。C#作为ASP.NET的主要编程语言,提供了面向对象的强大特性,使得开发者能够构建复杂的Web应用。 二、系统架构设计 该...
【北极星博客源代码和数据库】是一套基于ASP.NET技术构建的博客系统,它采用了经典的三层架构设计,为学习编程和开发的人员提供了丰富的实践素材。这个项目包含了前端展示层、业务逻辑层以及数据访问层,是理解Web...
回到我们的【C#博客系统】,这个系统可能基于ASP.NET Web Forms或ASP.NET MVC框架构建,这两个框架都是.NET框架的一部分,专门用于开发Web应用。Web Forms提供了一种事件驱动的模型,类似于桌面应用程序的开发方式,...
ASP.Net提供了一套完整的开发工具和模型,简化了Web应用的构建过程,例如,它包含了视图状态管理和页面生命周期管理,使得开发者可以更专注于业务逻辑。 数据库文件是系统不可或缺的部分,它存储了所有商品、用户、...
开发者可以利用.NET框架中的ASP.NET来构建动态网页,实现在线答题系统的用户界面。 描述中提到"运行环境 .Net 4.0",这意味着系统是在.NET Framework 4.0环境下运行的。这个版本引入了多个新特性,如WCF(Windows ...
在.NET中,这通常通过AJAX技术实现,结合WebAPI或ASP.NET MVC的控制器来处理文件上传请求。学习这一部分,你需要理解异步请求的工作原理,以及如何处理上传的文件数据。 前端列表校验是用户输入数据质量控制的重要...
《*** Web API》通过第五章和第六章来展示如何设计一个示例应用程序的结构和领域模型,以及如何使用Web API框架来构建服务。 路由是确定Web请求如何映射到对应的控制器和动作的过程。*** Web API提供了灵活的路由...
在VS2005中,这可能通过ASP.NET的身份验证服务实现,如Forms身份验证,结合数据库存储的用户凭证进行校验。同时,系统可能还包含会话管理,以跟踪用户在线状态和操作记录。 再者,项目详细信息的查看功能,便于员工...
在C#中,可以使用ASP.NET MVC、ASP.NET Core或Windows Forms等技术来构建展示层。展示层应尽量轻量化,只负责显示数据和传递用户操作,不涉及业务逻辑。 在实际开发中,N层架构可能会进一步细分为更多的层次,如...
ASP.NET提供了多种状态管理机制,包括: - **ViewState**:适合于页面内的状态保存。 - **Session State**:存储特定用户会话的信息,适用于跨页面的数据维护。 - **Application State**:全局存储,所有用户共享,...
ASP.NET MVC是微软提供的一个开源Web应用框架,基于MVC模式,为C#开发Web应用提供了一套强大的工具和库。 1. **路由系统**:ASP.NET MVC的路由机制可以根据URL模式动态映射到控制器和动作,实现灵活的URL设计。 2....
ExtJS 是一个强大的JavaScript库,专门用于构建富客户端的Web应用程序。它提供了丰富的用户界面组件和...在实际开发中,开发者需要结合具体的服务器端技术(如Spring MVC, ASP.NET MVC, Laravel等)来实现这些功能。
ASP.NET是由微软公司开发的一套用于构建Web应用程序的技术平台。它提供了丰富的服务器端控件,与Wicket一样,都强调组件化开发。 - **1.3.4 Wicket概述** Wicket是一种现代的、面向对象的Web框架,它的核心特性...
4. **MVC架构**:虽然Windows Forms可以实现界面,但更现代的C#应用可能采用ASP.NET MVC框架,它遵循Model-View-Controller设计模式,分离业务逻辑、数据处理和用户界面,使得代码结构清晰,易于维护。 5. **异常...