• [原]发布一个防SQL注入漏洞的HttpModule


    写在最前面的话:
    下面的内容可以不看,但是这段一定要看,看完后再写回复。
    本文所描述的前提环境是:
    你手里有一个Asp.net的系统,这个系统存在SQL注入漏洞,但是你不能动它的源代码(非技术因素)。

    SQL注入漏洞就不解析了,我认为防止SQL注入漏洞最有效的方法只有“意识”和“参数化查询”这两条(针对.net和Java,其他不熟悉,不乱说)。

    由于我们这里部署了很多Asp.net的系统和网站,有一些存在SQL注入漏洞,为了不碰它的源代码,特意写了这个HttpModule。

    使用正则表达式作为过滤规则是为了尽量降低误判率,基于关键字的判断规则很容易误判。

    部署很简单,将DeSqlInjection.dll 复制到 bin 目录下面,在Web.config文件中加入下面两段,就可以了:

    对于 ' or 1=1-- 这种方式的注入无能为力。

    适当修改killkill_DenyRegex的正则表达是可以将该过滤器退化为基于关键字过滤的过滤器,但是不推荐这么做。

    可以自行修改killkill_DenyRegex的正则表达式,使过滤规则更加强大或者高效,可以的话,顺便告诉我你的精妙正则表达式 :-)

    <appSettings>
        <!--DeSqlInjection.RegexFilter 配置-->
        <add key="killkill_DenyRegex" value=".*((;.*update(\s|\*/|/\*).*\w+.*(\s|\*/|/\*)set(\s|\*/|/\*).+=.+)|(;.*delete(\s|\*/|/\*).*from(\s|\*/|/\*).+\w+)|(.*select(\s|\*/|/\*).*\w+.*(\s|\*/|/\*)from(\s|\*/|/\*).*)|(;.*(drop|alter|truncate|create)(\s|\*/|/\*).*table(\s|\*/|/\*).*\w+)|(;.*declare.*cursor.*)).*"/>
        <add key="killkill_QueryLength" value="10"/>
        <add key="killkill_RedirectPage" value="~/Deny.htm"/>
        <!--DeSqlInjection.RegexFilter 配置-->
    </appSettings>

    <httpModules>
        <!--DeSqlInjection.RegexFilter 配置-->
        <add name="DeSqlInjectionModule" type="DeSqlInjection.RegexFilter, DeSqlInjection"/>
        <!--DeSqlInjection.RegexFilter 配置-->
    </httpModules>

    该HttpModule 在 Visual Studio 2008 sp1 下开发,发布目标Framework为2.0,源代码可以随便改,但是请保留“Powered By killkill”的信息,源代码下载后请重新编译一下,获得dll文件。如果嫌麻烦,就下载 dll 文件吧。

    源代码下载

    DLL文件下载

  • 相关阅读:
    Solr的学习使用之(五)添加索引数据
    django视图层
    django的路由层
    第九章 MySQL 高可用(MHA)
    第八章 mysql的主从复制
    第七章 mysql的备份与恢复
    第六章 mysql日志
    第五章 存储引擎
    第四章 元数据 索引
    第三章 mysql 数据库接口程序以及SQL语句操作
  • 原文地址:https://www.cnblogs.com/killkill/p/1398524.html
Copyright © 2020-2023  润新知