整站如何防止SQL攻击_.Net教程

编辑Tag赚U币
教程Tag:暂无Tag,欢迎添加,赚取U币!

推荐:总结.NET开发中ADO.NET的应用
一、DataTable DataTable表示内存中数据的一个表,它完全是在内存中的一个独立存在,包含了这张表的全部信息。DataTable可以是从通过连接从数据库中读取出来形成的一个表,一旦将内容读到DataTable中,此DataTable就可以跟数据源断开而独立存在;也可以是完

    asp.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> 
    <add key="safeParameters" value="OrderID-int32,CustomerEmail-email,ShippingZipcode-
USzip" /> 
</appSettings>

    其中key是后面的值为“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"); 
    } 
}

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

分享:关于Gridview的多种使用方法总结
asp.net中 Gridview的多种使用方法总结,具体如下面 截图,并包括详细源代码注释,需要的请下载。 1:在Gridview中无须编写后台代码,直接实现增除删改 2:在Gridview中添加新记录 3:在Gridview中实现编辑和更新操作 4:在Gridview中实现一次性更新所有记录

来源:模板无忧//所属分类:.Net教程/更新时间:2010-05-20
相关.Net教程