快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

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

 

作者:淘特网

出处:淘特网

注:转载请注明出处

防止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\");
    }
}


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






返回类别: 教程
上一教程: 转贴自JoyASP:.NET框架(一)
下一教程: 用 .NET 实现插件机制

您可以阅读与".Net程序如何防止被注入(整站通用)"相关的教程:
· ASP.NET中如何防范SQL注入式攻击
· net应用程序如何批上XP的外衣?
· .NET框架程序设计读书笔记(三)--.net框架类库(FCL)和通用类型系统、代码互操作
· 如何保护我们的 .NET 程序集?
· 第八章 常数与字段[《.NET框架程序设计》读书笔记]
    微笑服务 优质保证 索取样品