我可以使用运行PHP站点的IIS将IP列入白名单吗?

时间:2009-06-25 16:27:42

标签: php iis ip-address whitelist

正如这篇文章所述,blocking IP's via PHP非常容易。

但是,如何在网站范围内使用IIS执行此操作?

以下是我的(大)警告:

  1. 我没有权限更改php.ini。所以我不能使用auto_prepend功能。
  2. 我在Windows上使用IIS,因此无法使用.htaccess。
  3. 我没有任何在所有脚本上调用的PHP“页脚”。实际上,很多页面都是静态HTML!
  4. 我有什么方法可以使用IIS将IP列入白名单吗?

    好消息是我有一个静态的IP列表白名单,所以我不需要轻易改变它们。

2 个答案:

答案 0 :(得分:4)

您可以在IIS中将IP地址列入白名单,这样可以为您提供所需的结果。

  • 在IIS 6.0中,右键单击您的网站并选择属性。
  • 转到“目录安全性”选项卡。
  • 单击“编辑”以获取“IP地址和域名限制”
  • 点击“拒绝访问”单选按钮。
  • 输入您想要的任何IP地址。

答案 1 :(得分:2)

您可以使用IIRF之类的网址重写器来执行此操作。插入规则以将404或其他任何内容返回到来自不允许的IP的请求。这适用于任何Web应用程序平台:PHP,Java,ASP.NET,RoR,静态html或图像,等等。

自述文件给出了一个这样的例子:

RewriteCond %{REMOTE_ADDR}   ^(?!127.0.0.1)([0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3})(.*)$
RewriteRule  ^/(?!redirected.htm)(.*)$      /redirected.htm

它说:

  

当服务器变量“REMOTE_ADDR”的计算结果为非127.0.0.1的ip地址时,上述条件的计算结果为true。 ?!是零宽度负前瞻,正则表达式末尾的(。*)是捕获有时出现在该变量中的任何垃圾。条件之后的规则是,对于任何不是“redirected.htm”的URL,将其映射到“redirected.htm”。这可以防止无休止的重写。 (你也可以使用[L]修饰符标志来防止无休止的重写)。

此RewriteCond + RewriteRule将任何外部发起的请求重定向到IIS服务器。您可以针对特定的白名单IP执行类似操作。

IIRF是一个用C语言编写的ISAPI过滤器,在哲学上与mod_rewrite类似。它适用于IIS5,6或7.您将需要管理员权限才能进行设置。您不需要“编程”,但是有一个ini文件与.htaccess具有类似的语法(特别是对于mod_rewrite规则)。

IIRF是免费和开源的。