首页 > 解决方案 > 防止 Apache/PHP 运行影响另一个 vHost 的代码

问题描述

情况

我的/var/www/目录中有多个文件夹。

创建的用户可以控制特定目录.../var/www/app1属于app1:app1www-dataapp1组的成员)。

这对我想要的效果很好。

问题

如果app1用户上传了一个 PHP 脚本来更改app2s 目录结构中某些内容的文件/文件夹权限,则 Apache 进程(因为服务器上只安装了一个)将非常乐意运行它,因为它具有必要的权限访问文件夹/var/www/app1 /var/www/app2文件。

编辑

据我所知,类似/var/www/app1/includes/hack.php

<?php
chmod("/var/www/app2", 777);
?>

Apache 进程(由 拥有www-data)将运行它,因为它有权更改/var/www/app1/var/www/app2目录。然后,用户app1将能够cd /var/www/app2rm -rf /var/www/app2等,这显然是不好的。

问题

如何避免Apache 进程的这种交叉污染?我可以指示 Apache 仅运行影响驻留在相关 vHost 根目录及以下的文件/文件夹的 PHP 脚本吗?

标签: phpapachepermissionsvhosts

解决方案


您应该向每个站点的 vhost 文件添加一个 open_basedir 指令。open_basedir 指令限制站点可以访问的目录。

您可以在此处阅读有关 open_basedir的更多信息。


推荐阅读