ISAPI 过滤器, 仅允许具有选定 IP 地址的主机访问






4.11/5 (9投票s)
1999年12月7日

74065

1644
本文描述了一个 ISAPI 筛选器,用于仅允许访问在外部数据源中列出的具有 IP 地址的主机。
示例使用一个文件 (ipaddressdb.txt) 来跟踪已授权的 IP 地址,但您可以修改此示例以访问一个包含 IP 地址信息的数据库。
对于每个 URL 请求,筛选器首先在最近允许的地址的缓存中查找,如果查找失败,则在 ipaddressdb.txt 文件中查找。这展示了一种授权连接的有效方法:缓存允许筛选器快速允许或拒绝访问,并且由于每个请求都通过筛选器传入,因此速度至关重要。
该项目是一个标准的应用向导生成的 ISAPI 筛选器。有 4 个参数可以更改以微调筛选器:缓存地址的最大数量,缓存条目将被移动到列表前端的位置(以缩短搜索时间!),包含 IP 地址列表的文件的名称,以及指示客户端其 IP 地址的主机不允许访问此服务器的 HTML 文件的名称。所有这些参数都是在 IPAddressFilter.h 标头文件中的 #define
指令。
可以从几个方面改进该筛选器:使用数据库而不是文件来获取 IP 地址信息(您应该考虑使用存储过程来搜索和/或缓存!),从注册表中加载参数,自动选择缓存地址的数量和列表重新排序参数等。
提供了 完整的源代码,您将需要在其中进行编译才能获得一个可用的筛选器。编译完项目后,您需要按照以下步骤进行安装
- 运行 REGEDT32.EXE 并按如下方式修改服务器的注册表。在 HKEY_LOCAL_MACHINE\CurrentControlSet\Services\W3SVC\Parameters 中选择 Filter DLLs 键。添加 ipaddressfilter.dll 的本地路径,通常是 C:\WinNT\System32\InetSrv\ipaddressfilter.dll。筛选器条目用逗号分隔。顺序很重要,如果您有其他具有相同优先级的筛选器,则第一个列出的将首先收到请求。
- 将 ipaddressfilter.dll 文件复制到您在注册表中指定的目录中。
- 确保系统帐户对过滤器 DLL 文件具有执行权限。
- 编辑 ipaddressdb.txt 文件,使其包含有效的 IP 地址。文件的格式为
127.*
172.16.1.6
172.16.5.*
172.17.* - 将 ipaddressdb.txt 文件复制到您在 IPAddressFilter.h 标头文件中为 IP 地址数据库指定的目录中。
- 将 NoAccess.htm 文件复制到您在 IPAddressFilter.h 标头文件中为指示此 IP 地址拒绝访问的页面指定的目录中。
- 确保系统帐户对 NoAccess.htm 和 ipaddressdb.txt 文件具有读取权限。
- 重新启动 WWW 服务。
许可证
本文未附加明确的许可证,但可能在文章文本或下载文件本身中包含使用条款。如有疑问,请通过下面的讨论区联系作者。
作者可能使用的许可证列表可以在此处找到。