有没有办法将 PHP include() 或 require() 对文件路径的访问权限列入黑名单?

Is there a way to blacklist PHP include() or require()'s access to file paths?

这听起来像是一个愚蠢的问题,目前我这样做的方式并不安全,所以我希望能够提高我的安全性并减少我被恶意使用的机会。

我有一个“管理面板”。我可以 add/remove 用户并任命他们为管理员等。我可能会让他们拥有的权限之一是编辑文件。这是一个问题,因为我将密码存储在文件中并通过 .htaccess.

限制对它们的 Web 访问(MySQL 托管提供商的使用率很低)

正因为如此,我提供了一个文件黑名单。但是,如果人们将 PHP 文件编辑为 include()require() 登录处理文件并获取会话密钥(这是我的登录处理脚本可以做的),人们仍然可以看到密码为root账户然后劫持它并拥有root权限。

因此我想限制 include/require 访问。

我第一个想到的想法就是在他们编辑的文件的代码中简单地检查它是否是requiring/including文件,但这似乎太“冒险”了。

然后,我想知道是否可以将某些 file/certain 文件的 include/require 的访问限制为仅特定 php 文件的列表(例如 login/control 面板需要该登录处理程序文件的文件)。

如果不是,我是否应该完全取消文件编辑功能,因为即使我找出如何限制访问,这似乎也很冒险。

include() 不允许将路径限制为特定文件夹。同样适用于 require()require_once()file_get_contents()highlight_file()fopen() 等...

您可以更改默认包含路径,但那是另一回事。仍然可以包括使用绝对路径或不同的相对路径。或者使用不同的函数简单地打印文件内容。

所以我的建议是完全禁止编辑文件。

如果您需要用户能够更新文本内容,请考虑使用翻译引擎(即使只针对一种语言)。可能与降价(存储在数据库中的 MD,转换为 HTML 以供显示)或所见即所得编辑器的 HTML 输出相结合,如果他们也需要能够编辑样式。