htaccess 通过 ip 范围访问文件

Posted

技术标签:

【中文标题】htaccess 通过 ip 范围访问文件【英文标题】:htaccess access to file by ip range 【发布时间】:2011-06-29 20:50:43 【问题描述】:

如何只允许具有一定 IP 地址范围内 ip 的用户访问文件?

例如文件 admin.php。范围从 0.0.0.0 到 1.2.3.4。

我只需要配置对一个文件的访问权限,而不是对目录的访问权限。

【问题讨论】:

允许从 FROM_IP TO_IP @Manish Trivedi 刚刚尝试过:127.0.0.1 被 127.0.0.0 127.0.0.2 拒绝。因此,事情并没有那么简单——除非我在测试中犯了错误。我有吗? 【参考方案1】:

只需添加 FilesMatch 或 Files 指令即可将其限制为特定脚本。

以下内容将阻止对所有以“admin.php”结尾的脚本的访问:

<FilesMatch "admin\.php$">
    Order deny,allow
    Deny from all
    Allow from 10.0.0.0/24
</FilesMatch>

以下内容只会阻止 admin.php:

<Files "admin.php">
    Order deny,allow
    Deny from all
    Allow from 10.0.0.0/24
</Files>

有关更多信息,请参阅Configuration Sections 上的 apache 文档。

【讨论】:

【参考方案2】:

查看Allow Directive的手册页

Order Deny,Allow
Deny from all
Allow from 10.1.0.0/255.255.0.0

部分 IP 地址

例子:

Allow from 10.1
Allow from 10 172.20 192.168.2

IP 地址的前 1 到 3 个字节,用于子网限制。

网络/网络掩码对

例子:

Allow from 10.1.0.0/255.255.0.0

一个网络 a.b.c.d 和一个网络掩码 w.x.y.z。用于更细粒度的子网限制。

网络/nnn CIDR 规范

例子:

Allow from 10.1.0.0/16

与前一种情况类似,只是网络掩码由 nnn 高位 1 位组成。

【讨论】:

但是如何将它用于例如 admin.php 文件? 从 htaccess 中的代码添加 2 个 ip 范围到我的允许中是否正确? ***.com/questions/31833456/… "网络掩码由 nnn 高位 1 位组成。" - 那是什么意思?是关于“/16”的吗?我经常看到这个符号,但还没有找到解释。 知道了,偶然发现:秘籍是“CIDR-Format”【参考方案3】:

您无法将 IP 范围与 allow 匹配,但您可以使用 CIDR 表示法来模拟它:

Order allow,deny

# 0.0.0.0 - 0.255.255.255.255
Allow from 0.0.0.0/8

# 1.0.0.0 - 1.1.255.255
Allow from 1.0.0.0/15

# 1.2.0.0 - 1.2.1.255
Allow from 1.2.0.0/23

# 1.2.2.0 - 1.2.2.255
Allow from 1.2.2.0/24

# 1.2.3.0 - 1.2.3.3
Allow from 1.2.3.0/30

# 1.2.3.4
Allow from 1.2.3.4

【讨论】:

【参考方案4】:

只需为单个 IP 执行此操作:

<Limit GET POST>
order deny,allow
deny from all
allow from 1.2.3.4
</Limit>

如果您想为 10.x.x.x 之类的范围执行此操作,请执行以下操作:

<Limit GET POST> 
order allow,deny 
allow from 10
deny from all
</LIMIT>

【讨论】:

【参考方案5】:

如果您使用 WordPress,那么最好和最简单的方法是从他们的网站 http://www.lionscripts.com/ip-address-blocker 安装插件 - LionScripts : WordPress IP Blocker

他们的专业版具有更多功能,例如国家/地区屏蔽和 IP 范围屏蔽、批量 csv 上传等。

【讨论】:

不过好像不会限制上传的文件。【参考方案6】:

如果您提供通配符 0.0.255.255

Order allow,deny
# 1.2.0.0 - 1.2.255.255
Allow from 1.2.0.0/16

这将给出 1.2.0.1 - 1.2.255.254 的范围

你也可以check here

【讨论】:

【参考方案7】:
Order Deny,Allow
Deny from all
Allow from 311.311.311 322.322.322.322

见answer here

【讨论】:

这仅匹配指定的 IP 地址,而不是范围。

以上是关于htaccess 通过 ip 范围访问文件的主要内容,如果未能解决你的问题,请参考以下文章

.htaccess-仅允许从某些IP和IP范围进行访问

apache .htaccess 分布式配置文件 解读

多个 .htaccess 文件中多个 mod_rewrite 规则的优先级是啥? [关闭]

如何通过 IP 限制对我的 PHP 弹性 beanstalk 环境的访问?

为啥我的 .htaccess 文件重定向到完整的服务器路径而不是相对路径?

弹性 beanstalk .htaccess 文件不允许指定 IP 通过