【问题标题】:Can I whitelist IP's using IIS running a PHP site?我可以使用运行 PHP 站点的 IIS 将 IP 列入白名单吗?
【发布时间】:2010-11-05 21:41:26
【问题描述】:

正如本文所述,blocking IP's via PHP 非常简单。

但是,我如何在站点范围内使用 IIS 做到这一点?

这是我的(大)警告:

  1. 我无权更改 php.ini。所以我不能使用 auto_prepend 功能。
  2. 我在带有 IIS 的 Windows 上,因此无法使用 .htaccess。
  3. 我没有在所有脚本上调用的任何 PHP“页脚”。事实上,很多页面都是静态 HTML!

有什么方法可以使用 IIS 将 IP 列入白名单?

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

【问题讨论】:

    标签: php iis ip-address whitelist


    【解决方案1】:

    您可以使用像 IIRF 这样的 URL 重写器来执行此操作。插入规则以返回 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 地址不是 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 是免费和开源的。

    【讨论】:

      【解决方案2】:

      您可以在 IIS 中将 IP 地址列入白名单,这应该会给您想要的结果。

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

      【讨论】:

        猜你喜欢
        • 2021-03-03
        • 2012-11-21
        • 2017-09-18
        • 2017-01-12
        • 1970-01-01
        • 1970-01-01
        • 2023-01-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多