gpt4 book ai didi

apache - .htaccess 动态授予访问权限(包括系统范围的文件)

转载 作者:行者123 更新时间:2023-12-02 06:38:41 26 4
gpt4 key购买 nike

我有一台托管多个域及其子域的服务器,我正在尝试找到使用 .htaccess 保护某些敏感文件夹和子域的正确方法。目前一切都很好,但我想到了一个相当可行的解决方案(编程方面),但我似乎无法让 .htaccess 来执行我的邪恶命令。

长话短说:

  • 我有一个存储在文件/数据库中的 IP 列表
  • 根据这个列表我生成一个文件,比如说/home/ip.allow
  • 文件包含允许条目(允许来自123.123.123.123)

在我在此服务器上托管的域/子域中,我有包含以下内容的简单 .htaccess 文件:

RewriteEngine On
Order allow, deny
Deny from all

我感兴趣的是如何包含 /home/ip.allow 这样我就不必以编程方式查找和编辑 vhosts 路径中的所有 .htaccess 文件(将所有条件放在一个文件中将使我的生活变得更加轻松)。

我确实在 Apache's mod_rewrite documentation 中找到了 RewriteMap 指令但这似乎仅适用于重写,不适用于授予访问权限。

关于这个主题有什么想法吗?

最佳答案

您可以使用 mod_rewrite 执行类似的操作。但您需要改变一些事情。

您不需要创建一个包含大量条目的文件,如下所示:Allow from 123.123.123.123,您需要创建一个键/值映射,以便我们可以将其传递给 RewriteMap 。在此示例中,由于您列出了一组允许访问的 IP,因此该文件将包含一堆如下所示的条目:123.123.123.123 allowed,其中“123.123.123.123”是键,“允许”是值。

现在我们必须使用 RewriteMap 为此设置一个映射,但是,问题是我们只能在服务器配置或虚拟主机配置中使用它,而不能在 内使用它目录文件或.htaccess 文件。因此,您可以在 httpd.conf 或虚拟主机文件中的某个位置进行设置:

RewriteMap access_list txt:/home/ip.allow

现在您可以使用 RewriteCond 访问任何 .htaccess 文件中的 map access_list访问此映射和 RewriteRule 除了发出 [F] (禁止)之外不执行任何操作:

RewriteCond ${access_list:%{REMOTE_ADDR}} =""
RewriteRule ^(.*)$ - [F,L]

这里的RewriteCond只是尝试查找%{REMOTE_ADDR}作为 map 文件的键。如果 map 文件中唯一的内容是 123.123.123.123allow 并且远程地址是 127.0.0.1,则没有任何内容匹配, map 将返回一个空字符串,从而满足="" 位。否则,如果远程地址为123.123.123.123,则将返回“allow”,并且条件将失败,从而授予访问权限。

您可以根据您设置映射文件的方式尝试授予或拒绝。

关于apache - .htaccess 动态授予访问权限(包括系统范围的文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7476525/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com