2009-06-25 78 views
2

正如这个家伙的文章所述,blocking IP's via PHP非常容易。我可以使用运行PHP网站的IIS将IP列入白名单吗?

但是,我怎样才能做到这一点,网站范围内,使用IIS?

这里是我的(大)注意事项:

  1. 我没有权限修改php.ini中。所以我不能使用auto_prepend功能。
  2. 我在Windows上使用IIS,所以我不能使用.htaccess。
  3. 我没有任何PHP“footer”在所有脚本上被调用。实际上,很多页面都是静态的HTML!

有什么办法可以使用IIS将白名单IP?

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

回答

4

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

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

您可以使用URL重写器,如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”的计算结果为,其是IP地址NOT 127.0.0.1。 ?!是一个零宽度的负向预测,并且正则表达式末尾的(。*)用于捕获有时出现在该变量中的垃圾。条件之后的规则说,对于任何不是“redirected.htm”的URL,都将其映射到“redirected.htm”。这可以防止无尽的重写。 (你也可以用[L]修饰符标志防止无限重写)。

这RewriteCond + RewriteRule重定向任何外部发起的请求到IIS服务器。对于一组特定的白名单IP,您可以做类似的事情。

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

IIRF是免费且开源的。

相关问题