.Net程序如何防止被注入(整站通用)

原创 2006年06月15日 10:12:00
作者:淘特网

出处:淘特网

注:转载请注明出处

防止sql注入,通常一个一个文件修改不仅麻烦而且还有漏掉的危险,下面我说一上如何从整个系统防止注入。

做到以下三步,相信的程序将会比较安全了,而且对整个网站的维护也将会变的简单。

一、数据验证类:
parameterCheck.cs

public class parameterCheck{
 public static bool isEmail(string emailString){
 return System.Text.RegularExpressions.Regex.IsMatch(emailString, "['//w_-]+(//.['//w_-]+)*@['//w_-]+(//.['//w_-]+)*//.[a-zA-Z]{2,4}");
 }
 public static bool isInt(string intString){
 return System.Text.RegularExpressions.Regex.IsMatch(intString ,"^(//d{5}-//d{4})|(//d{5})$");
 }
 public static bool isUSZip(string zipString){
 return System.Text.RegularExpressions.Regex.IsMatch(zipString ,"^-[0-9]+$|^[0-9]+$");
 }
}


二、Web.config

在你的Web.config文件中,在<appSettings>下面增加一个标签:如下
 <appSettings>
 <add key="safeParameters" value="OrderID-int32,CustomerEmail-email,ShippingZipcode-USzip" />
</appSettings>

其中key是<saveParameters>后面的值为"OrderId-int32"等,其中"-"前面表示参数的名称比如:OrderId,后面的int32表示数据类型。

三、Global.asax

在Global.asax中增加下面一段:

protected void Application_BeginRequest(Object sender, EventArgs e){
 String[] safeParameters = System.Configuration.ConfigurationSettings.AppSettings["safeParameters"].ToString().Split(',');
 for(int i= 0 ;i < safeParameters.Length; i++){
 String parameterName = safeParameters[i].Split('-')[0];
 String parameterType = safeParameters[i].Split('-')[1];
 isValidParameter(parameterName, parameterType);
 }
}

public void isValidParameter(string parameterName, string parameterType){
 string parameterValue = Request.QueryString[parameterName];
 if(parameterValue == null) return;

 if(parameterType.Equals("int32")){
 if(!parameterCheck.isInt(parameterValue)) Response.Redirect("parameterError.aspx");
 }
 else if (parameterType.Equals("double")){
 if(!parameterCheck.isDouble(parameterValue)) Response.Redirect("parameterError.aspx");
 }
 else if (parameterType.Equals("USzip")){
 if(!parameterCheck.isUSZip(parameterValue)) Response.Redirect("parameterError.aspx");
 }
 else if (parameterType.Equals("email")){
 if(!parameterCheck.isEmail(parameterValue)) Response.Redirect("parameterError.aspx");
 }
}
 

以后需要修改的时候我们只需要修改以上三个文件,对整个系统的维护将会大大提高效率,当然你可以根据自己的需要增加其它的变量参数和数据类型。

相关文章推荐

ASP.NET程序如何防止被注入(整站通用)

目的:对输入的字串长度,范围,格式和类型进行约束. 在开发 ASP.NET 程序时使用请求验证防止注入攻击. 使用 ASP.NET 验证控件进行输入验证. 对不安全的输出编码. 使用命令参数集模式防止...
  • dxlftt
  • dxlftt
  • 2011年03月09日 11:45
  • 215

读吧.net书网整站程序 v3.0 Sp1

  • 2006年05月31日 11:30
  • 367KB
  • 下载

项目通用程序源代码,ASP.NET,C#

  • 2009年05月07日 19:33
  • 944KB
  • 下载

.Net 通用防注入代码

using System; namespace web.comm { /// /// ProcessRequest 的摘要说明。 /// public class...
  • jaswhen
  • jaswhen
  • 2015年09月23日 12:49
  • 175

.net C#通用打印程序源代码

  • 2017年05月04日 11:07
  • 339KB
  • 下载

asp.net程序防止sql注入源代码

前几天自己维护的网站发现有很多超链接,页面全乱了!查询下数据库几乎所有的表都有这个链接,估计就是sql注入了。网上查询了一下,SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没...

一个全面的PHP整站防注入程序代码

这是一个考虑比较全面的php和sql结合的防注入程序,在php方便主要对get,post,cooke,files进行了过滤,在sql中我们就对delete,update一些查询命令进行检测过滤。 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:.Net程序如何防止被注入(整站通用)
举报原因:
原因补充:

(最多只允许输入30个字)