允许仅访问具有选定名称的主机的ISAPI筛选器

分享于 

3分钟阅读

Web开发

  繁體 雙語

示例使用文件( hostdb.txt ) 跟踪授权的主机名,但是你可以修改这里示例以访问保存主机信息的数据库。

对于每个URL请求,筛选器首先查看最近允许的主机的缓存,当它失败时查看 hostdb.txt 文件。 这显示了一种有效的授权连接方式: 缓存允许过滤器快速允许或者禁止主机访问,并且由于每个请求都通过过滤器,速度是关键的。

这个项目是一个标准的生成ISAPI过滤器的程序。 有 5个参数可以更改为微调过滤器: 缓存主机数量,在它的前面移动缓存条目的位置,包含主机列表或者向用户显示IP地址不能解析为主机 NAME的文件的名称,以及该主机拒绝访问的html文件的名称。 所有这些参数都是 hostnamefilter.h header 文件中的#define 指令。

可以通过以下几种方式改进过滤器: 使用数据库代替主机信息( 应该考虑使用存储过程来搜索和/或者缓存),从注册表中加载参数,自动选择缓存主机数和列表重新排序参数。

为了得到工作过滤器,提供了完整源代码插件,你必须编译它。 编译项目后,你需要执行以下步骤来安装:

  • 运行 REGEDT32.EXE 并按照如下方式修改服务器的注册表。 在HKEY_LOCAL_MACHINECurrentControlSetServicesW3SVCParameters中选择筛选dll键。 添加到 hostnamefilter.dll,的本地路径通常 C:WinNTSystem32InetSrvhostnamefilter.dll. 是用逗号分隔的。 订单很重要,如果你有它的他优先级的筛选器,首先列出的第一个过滤器将接收到请求。
  • 将 hostnamefilter.dll 文件复制到你在注册表中指定的目录。
  • 确保系统帐户对筛选器dll文件具有执行权限。
  • 编辑 hostdb.txt 文件,以便它包含有效的主机名。 文件的格式为:

host1
host2.foo.com
*.edu
*.foo.net

  • 将 hostdb.txt 文件复制到你在 hostnamefilter.h header 文件中为主机数据库指定的目录中。
  • 将 NoName.htm 文件复制到页中 hostnamefilter.h header 文件中指定的目录,以指示无法解析该IP地址。
  • 将 NoAccess.htm 文件复制到你在 hostnamefilter.h header 文件中为该页指定的目录,以指示该主机的访问被拒绝。
  • 确保系统帐户对 NoName.htm, NoAccess.htm 和 hostdb.txt 文件具有读取权限。
  • 重新启动WWW服务。
  • </li/>

acc  Select  HOST  Names  Hosts  ISA  
相关文章