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

时间:2016-08-18 19:33:09

标签: php open-basedir

我试图通过允许open_basedir中的路径来确定是否有一种方法可以允许包含文件到open_basedir之外的某个目录,但同时阻止fopen,file_get_contents等打开那些文件目录。

我们的想法是防止恶意客户端窃取他们只有许可证使用的平台的源代码,并在未经授权的情况下将其移至其他服务器。

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

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

禁用fopen等不是一种选择。

1 个答案:

答案 0 :(得分:1)

这是一个长镜头:

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

  2. 修改https://github.com/php/php-src/blob/master/main/fopen_wrappers.h

  3. 中的php_check_specific_open_basedir功能

    要添加此行,请在访问路径时返回-1:

    PHPAPI int php_check_specific_open_basedir(const char *basedir, const char *path)
    {
        if (basedir == '/path/to/your/protected/area/') {
            return -1;
        }
    
    1. 然后使用src编辑
    2. 在服务器上创建/构建/安装PHP