允许从目录中包含但防止 fopen 到同一位置

Allow include from directory but prevent fopen to the same location

我试图弄清楚是否有一种方法可以通过允许 open_basedir 中的路径来允许将文件包含到 open_basedir 之外的某个目录中,但同时,防止fopen、file_get_contents 等从这些目录中打开文件。

这个想法是为了防止恶意客户端窃取他们只有许可使用的平台的源代码,并在未经授权的情况下将其移动到不同的服务器。

由于帐户是 chroot 的,它们不能 运行 shell_exec 系统命令或以其他方式从 shell 访问文件,但是因为我必须允许它们在 open basedir 中包含文件,有人可以写一个脚本来复制本地帐户中包含路径的文件结构,然后 ftp 它下来。

如果可能的话,我想阻止这种情况发生。

禁用 fopen 等不是一个选项。

这是一个远景:

  1. 下载 PHP SRC: https://github.com/php/php-src/

  2. 修改php_check_specific_open_basedir中的函数https://github.com/php/php-src/blob/master/main/fopen_wrappers.h

添加这一行,returns -1 当你的路径被访问时:

PHPAPI int php_check_specific_open_basedir(const char *basedir, const char *path)
{
    if (basedir == '/path/to/your/protected/area/') {
        return -1;
    }
  1. 然后 make/build/install PHP 在您的服务器上使用您的 src 编辑