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

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

  • 相关阅读:
    POJ 1775 (ZOJ 2358) Sum of Factorials
    POJ 1844 Sum
    HDOJ 1081(ZOJ 1074) To The Max(动态规划)
    HDOJ 2012 素数判定
    HDOJ 2011 多项式求和
    HDOJ 2010 水仙花数
    马云最新发言:让员工、客户、合作伙伴比自己更强
    乐视手机1S正式发售,乐视商城官网抽风遭网友吐槽
    C++引用(Reference)
    实验三 二叉树的基本操作(建立)及遍历
  • 原文地址:https://www.cnblogs.com/future/p/1334013.html
Copyright © 2011-2022 走看看