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

发布于 2024-07-26 06:10:48 字数 468 浏览 7 评论 0原文

正如这篇文章所述, 通过 PHP 阻止 IP 非常简单。

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

以下是我的(重要)警告:

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

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

好消息是我有一个要列入白名单的静态 IP 列表,因此我不需要轻松更改它们。

As outlined by this guys post, blocking IP's via PHP is pretty easy.

However, how can I do this, site wide, using IIS?

Here are my (big) caveats:

  1. I do not have access to change the php.ini. So I can't use auto_prepend feature.
  2. I am on Windows with IIS so I can't use .htaccess.
  3. I don't have any PHP "footer" which gets called on all of the scripts. In fact, a lot of the pages are static HTML!

Is there any way I can use IIS to whitelist IP's?

The good news is that I have a static list of IP's to whitelist, so I wont need to easily change them.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

感性 2024-08-02 06:10:48

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

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

You can whitelist IP addresses in IIS, which should give you the results you want.

  • In IIS 6.0, right-click your website and choose properties.
  • Go To the Directory Security tab.
  • Click Edit for "IP addresses and domain name restrictions"
  • Click the "Denied access" radio button.
  • Enter any IP-addresses that you want allowed.
伴随着你 2024-08-02 06:10:48

您可以使用 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”计算结果为非 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 是免费且开源的。

You can use a URL Rewriter like IIRF to do this. Insert rules to return 404's or whatever you like to requests that come from disallowed IPs. This will work with any web app platform: PHP, Java, ASP.NET, RoR, static html or images, whatever.

The readme gives an example like this:

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

and it says:

The above condition evaluates to true when the server-variable "REMOTE_ADDR" evaluates to an ip address which is NOT 127.0.0.1. The ?! is a zero-width negative lookahead, and the (.*) at the end of the regex is to catch any rubbish that sometimes appears in that variable. The rule following the condition says, for any URL which is not "redirected.htm", map it to "redirected.htm". This prevents endless re-writing. (You could also prevent endless rewriting with an [L] modifier flag).

This RewriteCond+RewriteRule redirects any externally originating requests to the IIS server. You could do something similar for a specific set of whitelisted IPs.

IIRF is an ISAPI filter written in C, and is similar in philosophy to mod_rewrite. It works with IIS5, 6, or 7. You will need admin access to set it up. You don't need to "program it", but there is a ini file that has similar syntax to .htaccess (specifically for the mod_rewrite rules).

IIRF is free and open source.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文