zoukankan      html  css  js  c++  java
  • .NET程序如何防止被注入(整站)

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

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

    一、数据验证类:
    parametercheck.cs


    public class parametercheck{
        public static bool isemail(string emailstring){
            return system.text.regularexpressions.regex.ismatch(emailstring, "[\\w_-]+(http://www.cnblogs.com/xjyggd/admin/file://.[//w_-]+)*@[//w_-]+(//.[//w_-]+)*//.[a-za-z]%7B2,4}");
        }
        public static bool isint(string intstring){
            return system.text.regularexpressions.regex.ismatch(intstring ,"^(http://www.cnblogs.com/xjyggd/admin/file://d%7B5%7D-//d%7B4%7D)(//d%7B5%7D)$");
        }
        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");
        }
    }
     

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

  • 相关阅读:
    1062 Talent and Virtue (25 分)
    1083 List Grades (25 分)
    1149 Dangerous Goods Packaging (25 分)
    1121 Damn Single (25 分)
    1120 Friend Numbers (20 分)
    1084 Broken Keyboard (20 分)
    1092 To Buy or Not to Buy (20 分)
    数组与链表
    二叉树
    时间复杂度与空间复杂度
  • 原文地址:https://www.cnblogs.com/future/p/1334013.html
Copyright © 2011-2022 走看看