用ISAPI编写防注入、防暴库及访问控制的IIS FireWall

ISAPI是IIS5.0以上版本提供的一个用于扩充IIS功能的机制,事实上IIS之所以能解析ASP(asp.dll)、ASP.NET(aspnet_isapi.dll)等脚本用的都是ISAPI技术。

ISAPI又分为两种:一种是用于扩充IIS解析功能的叫作ISAPI Extension,如解析asp的那个asp.dll;另一种是用于提供IIS安全认证及过滤的IIS Filter。本软件利用的就是IIS Filter,由于这个软件是我的一个作业,这些天还不能公开源程序,估计两个礼拜后可以公开(现已可在附件中下载)。

功能:1.防SQL注入(GET COOKIE 因时间关系没写POST防注);2.防暴库;3.IP及文件夹权限控制(就是可以控制哪些IP能访问哪些网站目录,可用于防止一般用户访问后台)。

演示:本BLOG已经用了此软件(没开SQL防注入功能),你可以通过访问http://www.langouster.com/admin 来检验IP及目录访问控制功能。

安装步骤

1.下载附件中文件,其中包含一个FireWall.dll和一个示例配置文件,保存到一个IIS有读写权限的目录。

2.右键“我的电脑”选中“管理”—>右键站点选中“属性”—>选择“ISAPI 筛选器”标签—>“添加”—>重启W3SVC服务。

如图:

附件:IISFireWall.rar 

源程序: FireWall源程序.rar

  • quote 2.tty
  • 能公布源码了吗
    langouster 于 2007-09-04 22:05:18 回复
    哦 忘了发了
    langouster 于 2007-09-04 22:10:35 回复
    已经传上去了
  • 2007-09-04 22:10:35 回复该留言
  • quote 4.源程序有问题啊
  • 源程序release出来的不能用啊,不能生成Setting.ini和日志文件,网站打不开。但是下载的FireWall.dll可以使用,能不能发个可以用的源码吗?我的水平差,改不了源码。我的邮箱shf314159@163.com
    langouster 于 2007-12-10 11:43:42 回复
    不好意思,源程序发错了,已经修改过了。
  • 2007-12-10 11:43:42 回复该留言
  • quote 7.langouster
  • 最后一项改成如下 |隔开:
    [ip=*] --这一项必须放在最后
    allowpath=
    denypath=/admin|/dfdfsfd/admin
    [/ip]
  • 2007-12-13 22:26:17 回复该留言
  • quote 9.一生只和一人睡
  • 我下载就是为了iis6上防post是怎么写的,结果没有,希楼主把防post的语句写上,
    langouster 于 2008-01-29 12:55:03 回复
    一方面是我比较懒 另一方面也是因为性能考虑
    在IIS6上写Post过滤 要自己处理报文 比较麻烦 IIS5上是很方便的
  • 2008-01-29 11:57:33 回复该留言
  • quote 10.一生只和一人睡
  • 楼主回复真的很快,我就是不懂iis6上获取post的方法,我是c++还没入门的人,希望楼主补上post吧
    一生只和一人睡 于 2008-01-29 14:07:49 回复
    能给我说一下流程也好呀,因为现在我要写一个非法关键字的过滤器,现在只能处理get方法的,post方法的一直不会写,楼主帮帮我
    langouster 于 2008-01-29 15:23:19 回复
    在OnReadRawData事件中匹配字符串 要自己处理HTTP报文结构
    遇到POST数据比较大 分多个报文的情况很麻烦
  • 2008-01-29 14:03:36 回复该留言
  • quote 11.Winneyao
  • 太好了!非常感谢!
    我页要写一个非法关键字的过滤器,在msdn上说iis6不支持OnReadRawData事件呢(The SF_NOTIFY_READ_RAW_DATA event and IIS 6.0
    Http.sys only supports routing raw request data to a single user mode process. This behavior prevents IIS 6.0 from supporting the SF_NOTIFY_READ_RAW_DATA event in worker process isolation mode. This behavior occurs because global filters that register for the SF_NOTIFY_READ_RAW_DATA event can be loaded in multiple worker processes. However, Http.sys cannot route raw data to all the multiple worker processes. Therefore, Secure Sockets Layer (SSL) processing remains the only raw data operation. SSL occurs in a single user mode process that is named lsass.exe.
  • 2008-03-14 16:47:22 回复该留言
  • quote 12.Winneyao
  • In IIS 5.0 isolation mode, global filters that register for the SF_NOTIFY_READ_RAW_DATA event are all loaded in a singleton process that is named Inetinfo.exe. SSL processing also occurs in the same process. Therefore, Http.sys can route all raw request data to that process.)
    我现在用的就是SF_NOTIFY_SEND_RAW_DATA,不知道有没有其他的办法,楼主帮帮忙吧!一定哦,期待ing!
  • 2008-03-14 16:47:28 回复该留言
  • quote 16.
  • 郁闷,我的后台访问不了啊
    lagouster2 于 2008-05-26 17:43:11 回复
    你是不是没把你的自己的IP加在信任里....
    请教 于 2008-08-27 20:28:51 回复
    如何加入信任IP
  • 2008-05-26 15:36:56 回复该留言
  • quote 17.www
  • 老大,你的软件用在ACCESS的数据库中好像有问题,很多图片显示不出来。
    我关掉你的IIS FireWall,图片就可以显示了
  • 2008-06-22 13:41:27 回复该留言
  • quote 18.请教
  • 请问一下。怎么设置来实现,允许某个IP能访问某给目录。怎么禁止某些IP访问某个目录。
  • 2008-08-27 20:15:55 回复该留言
  • quote 19.请教
  • 我还发现了一个问题。

    //默认配置必须放最后
    [ip=*]
    allowpath=
    denypath=/admin
    [/ip]

    这个配置文件好像设置后。并不是仅代表网站根目录下的admin目录不能被访问,
    而且网站下所以带admin的文件名都不能被访问,譬如www.xxx.com/admin_11.aspx 就不能被访问
  • 2008-08-27 20:21:34 回复该留言
  • quote 20.test
  • 我也想知道iis6怎么过滤post数据啊!老大快解决这个问题吧
  • 2008-09-10 13:47:50 回复该留言
  • quote 22.小浩
  • http://www.iis911.com
  • 我也写了个isapi的过滤器,目前运行很好。就是POST无法过滤!因为不能使用
    SF_NOTIFY_SEND_RAW_DATA,不知道该怎么办了!
  • 2008-11-12 19:42:12 回复该留言

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

日历

最新评论及回复

最近发表

Copyright langouster. Some Rights Reserved.   苏ICP备06046736号   

本站点由 Z-Blog 2.0 bate Build 构建,基于 Glued Ideas Subtle 主题,由 zx.asd 移植并创新.