您的位置:首页 > 移动开发 > Objective-C

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

2006-12-28 09:45 513 查看
 
防止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");
    }
}
 

以后需要修改的时候我们只需要修改以上三个文件,对整个系统的维护将会大大提高效率,当然你可以根据自己的需要增加其它的变量参数和数据类型。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息