`
cheeruplc
  • 浏览: 115000 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

asp.net中防止Sql注入的方法- 转

阅读更多
转自http://wenku.baidu.com/view/e9a489240722192e4536f6b2.html
原理很简单:使用Global.asax中的Application_BeginRequest(object sender, EventArgs e)事件,实现表单或URL提交数据的获取,然后通过SQLInjectionHelper类完成恶意代码的检查。

本代码只是考虑到通用性和部署简易性,因为项目已经开发完毕,并已经上线,为避免大量修改,才写的这个通用程序,大家可以在这里面加入不需要检查的表单值,这样不检查某些字段也是可以实现的。

直接贴代码:


   Global.ascx.cs

//在接收到一个应用程序请求时触发。对于一个请求来说,它是第一个被触发的事件,请求一般是用户输入的一个页面请求(URL)。
    void Application_BeginRequest(object sender, EventArgs e)
    {
        //Response.Write("通用注入检查");
        bool result = false;
       
        if (Request.RequestType.ToUpper() == "POST")
        {
            result = SQLInjectionHelper.ValidUrlPostData();//Post数据检查
        }
        else
        {
            result = SQLInjectionHelper.ValidUrlGetData();//Get数据检查
        }
       
        if (result)
        {
            Response.Write("您提交的数据有恶意字符!");           
            Response.Write("<script>alert('您提交的数据有恶意字符!');<//script>");
            Response.End();
        }
    }

SQLInjectionHelper.cs注入检测辅助类



/// <summary>
    /// 获取Post的数据
    /// </summary>
    public static bool ValidUrlPostData()
    {
        bool result = false;

        for (int i = 0; i < HttpContext.Current.Request.Form.Count; i++)
        {
            result = ValidData(HttpContext.Current.Request.Form[i].ToString());
            if (result)
            {
                break;
            }//如果检测存在漏洞
        }
        return result;
    }

    /// <summary>
    /// 获取QueryString中的数据
    /// </summary>
    public static bool ValidUrlGetData()
    {
        bool result = false;

        for (int i = 0; i < HttpContext.Current.Request.QueryString.Count; i++)
        {
            result = ValidData(HttpContext.Current.Request.QueryString[i].ToString());
            if (result)
            {
                break;
            }//如果检测存在漏洞
        }
        return result;
    }

    /// <summary>
    /// 验证是否存在注入代码
    /// </summary>
    /// <param name="inputData"></param>
    public static bool ValidData(string inputData)
    {
        //里面定义恶意字符集合
        //验证inputData是否包含恶意集合
        if (Regex.IsMatch(inputData, GetRegexString()))
        {
            return true;
        }
        else
        {
            return false;
        }
    }

    /// <summary>
    /// 获取正则表达式
    /// </summary>
    /// <param name="queryConditions"></param>
    /// <returns></returns>
    private static string GetRegexString()
    {
        //构造SQL的注入关键字符
    string[] strBadChar = {"and"
    ,"exec"
    ,"insert"
    ,"select"
    ,"delete"
    ,"update"
    ,"count"
    ,"from"
    ,"drop"
    ,"asc"
    ,"char"
    ,"or"
    //,"*"
    ,"%"
    ,";"
    ,":"
    ,"\'"
    ,"\""
    ,"-"
    ,"chr"
    ,"mid"
    ,"master"
    ,"truncate"
    ,"char"
    ,"declare"
    ,"SiteName"
    ,"net user"
    ,"xp_cmdshell"
    ,"/add"
    ,"exec master.dbo.xp_cmdshell"
    ,"net localgroup administrators"};

        //构造正则表达式
        string str_Regex = ".*(";
        for (int i = 0; i < strBadChar.Length - 1; i++)
        {
            str_Regex += strBadChar[i] + "|";
        }
        str_Regex += strBadChar[strBadChar.Length - 1] + ").*";

        return str_Regex;
    }
分享到:
评论

相关推荐

    【ASP.NET编程知识】ASP.NET防止SQL注入的方法示例.docx

    ASP.NET 防止 SQL 注入攻击的方法有很多,这些方法包括参数法防注入、传统的笨一点的办法、HttpModule 实现防sql注入、SqlFilter 防止 SQL 注入、validation 防止 SQL 注入等。只有通过使用这些方法,才能有效地防止...

    asp.net简单防范sql注入漏洞

    asp.net简单防范sql注入漏洞 防止 sql注入攻击 1 限制 文本框的最大长度 2 删除用户的单引号 3 处理sql注入的另外一个方法是 使用ado.net command对象的参数集合。 而不是评接多个字符串

    【ASP.NET编程知识】ASP.NET过滤类SqlFilter,防止SQL注入 .docx

    ASP.NET过滤类SqlFilter的目的是防止SQL注入攻击,这是一种常见的网络安全威胁。SQL注入允许恶意用户通过输入特殊构造的参数,使得后台系统执行非预期的SQL命令,从而可能获取敏感数据或破坏数据库。例如,如果一个...

    Asp.Net通用Sql防注入源码

    在Asp.Net开发中,SQL注入是一个非常重要的安全问题,它允许恶意用户通过输入特定的SQL语句来操控后台数据库,可能导致数据泄露、系统瘫痪甚至整个网站的安全性受到威胁。"Asp.Net通用Sql防注入源码"是针对这个问题...

    asp.net和vb.net 防止sql注入源码

    详细的介绍了防止sql注入攻击,内附asp.net 源码和vb.net源码。是初学者不错的选择。希望能够帮助到你。

    ASP.NET中如何防范SQL注入式攻击

    ASP.NET 是一种强大的 web 应用程序开发框架,然而,如同其他基于数据库的应用程序,它也可能面临 SQL 注入式攻击的威胁。SQL 注入是一种利用恶意 SQL 代码篡改正常查询,以获取未授权访问、数据泄露或破坏数据库的...

    ASP.NET(VB.NET)防SQL注入脚本程序.rar

    这个压缩包中的"ASP.NET(VB.NET)防SQL注入脚本2.0"是一个源码实例,提供了防止SQL注入的解决方案。它包含了VB.NET编写的类和方法,用于检查和清理用户输入,确保其不会对数据库执行恶意操作。以下是一些关键的安全...

    asp.net的SQL防注入过滤函数大集合

    以上提供的函数与处理机制是 ASP.NET 应用中防止 SQL 注入的有效手段之一。它们通过对用户提交的所有数据进行预处理,有效地降低了 SQL 注入攻击的风险。然而,这些方法并非万能,开发人员还需要结合其他安全措施来...

    ASP.NET防SQL注入DEMO

    ASP.NET是一种广泛使用的Web应用程序...通过理解这些方法并将其应用于你的ASP.NET项目中,你可以大大提高应用的防护能力,防止恶意攻击者利用SQL注入漏洞。在实际开发中,应该结合各种方法,确保代码的健壮性和安全性。

    ASP.NET源码——通用防SQL注入漏洞程序(Global.asax方式).zip

    通过分析和学习这个源码,开发者可以了解到如何在ASP.NET应用程序中有效地防止SQL注入,提升应用程序的安全性。同时,这也提醒我们,安全不应只依赖于单一的防护措施,而应综合多种方法,形成多层防御体系。

    C# MVC 过滤器防止SQL注入

    C# MVC 过滤器防止SQL注入

    ASP.NET下如何防范SQL注入式攻击

    在ASP.NET开发环境中,防范SQL注入式攻击是确保应用程序安全的关键步骤之一。SQL注入是一种常见的攻击方式,通过将恶意SQL代码插入到查询语句中,攻击者可以绕过身份验证,篡改数据,甚至完全控制数据库。为了保护...

    简单的asp.net登陆有一定的sql防注入功能

    标题提到的"简单的asp.net登陆有一定的sql防注入功能",意味着这个示例将展示一种基础的方法来防止SQL注入攻击。在ASP.NET中,通常我们会使用参数化查询或存储过程来避免这种情况,但在这个例子中,它可能通过一个...

    ASP.NET防止SQL注入函数

    ASP.NET防止SQL注入函数是开发安全Web应用程序的关键措施之一,主要目的是保护数据库不受恶意SQL语句的影响。SQL注入攻击是黑客常用的手段,通过输入含有恶意SQL命令的字符串,可能导致数据泄露、数据破坏甚至整个...

    ASP.NET防止SQL注入的方法示例

    本文将详细讲解如何使用实例方法防止ASP.NET中的SQL注入。 首先,了解SQL注入的基本概念。SQL注入是当应用程序直接将用户提供的输入拼接到SQL查询中时发生的一种攻击。攻击者可以通过在表单字段、URL参数等处插入...

    史上最全的.net 防止sql注入攻击的替换文本

    针对这一问题,《史上最全的.NET防止SQL注入攻击的替换文本》提供了一系列策略和方法,尤其聚焦于如何在.NET框架下通过字符串处理来防御SQL注入。 ### SQL注入攻击原理 SQL注入攻击主要是利用应用程序对用户输入...

    ASP.NET站点高级编程示---bbs

    ASP.NET提供各种安全特性,如SQL注入防护、XSS防护以及CSRF(跨站请求伪造)防护。 9. **部署与扩展性**:BBS系统需要能够随着用户增长而扩展。了解IIS服务器配置、负载均衡和云服务(如Azure)的使用,对于确保...

    ASPXSQL凌讯ASP.NET通用防SQL注入脚本系统 v3.0

    【ASPXSQL凌讯ASP.NET通用防SQL注入脚本系统 v3.0】是一个专为ASP.NET开发的软件,旨在帮助开发者防止SQL注入攻击。SQL注入是网络安全领域中常见的攻击手段,通过输入恶意的SQL代码,攻击者可以篡改、泄露或者破坏...

    ASP.NET客户管理系统----毕业设计

    此外,还需考虑SQL注入、跨站脚本攻击等安全风险,并采取相应的防护措施。 7. 错误处理与日志记录: 在系统开发中,错误处理和日志记录是必不可少的。通过try-catch语句捕获运行时错误,可以防止程序崩溃,同时...

Global site tag (gtag.js) - Google Analytics