首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以使用运行PHP站点的IIS来白名单IP吗?

问我可以使用运行PHP站点的IIS来白名单IP吗?
EN

Stack Overflow用户
提问于 2009-06-25 16:27:41
回答 2查看 3.1K关注 0票数 2

正如这个家伙的帖子所概述的,通过PHP阻止IP是相当容易的。

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

以下是我的(大的)警告:

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

有什么办法可以用IIS白名单IP的吗?

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-06-25 17:22:16

您可以在IIS中白名单IP地址,这将给出您想要的结果。

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

Stack Overflow用户

发布于 2009-06-25 16:34:57

您可以使用URL重写器(如IIRF )来完成此操作。插入规则返回404或任何您喜欢的请求来自不允许的IP。这将适用于任何web应用程序平台: PHP、Java、ASP.NET、RoR、静态html或图像等等。

readme给出了一个这样的例子:

代码语言:javascript
复制
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是免费和开放源码的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1044878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档