php - 防止 Apache/PHP 运行影响另一个 vHost 的代码
问题描述
情况
我的/var/www/
目录中有多个文件夹。
创建的用户可以控制特定目录.../var/www/app1
属于app1:app1
(www-data
是app1
组的成员)。
这对我想要的效果很好。
问题
如果app1
用户上传了一个 PHP 脚本来更改app2
s 目录结构中某些内容的文件/文件夹权限,则 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/app2
、rm -rf /var/www/app2
等,这显然是不好的。
问题
如何避免Apache 进程的这种交叉污染?我可以指示 Apache 仅运行影响驻留在相关 vHost 根目录及以下的文件/文件夹的 PHP 脚本吗?
解决方案
您应该向每个站点的 vhost 文件添加一个 open_basedir 指令。open_basedir 指令限制站点可以访问的目录。
您可以在此处阅读有关 open_basedir的更多信息。
推荐阅读
- c++ - 定义两个包含相反类的类会导致 Redfinition 错误
- c# - VM解析成本高吗?MVVM Autofac
- mysql - MySQL 存储过程插入循环
- java - 使用 Streams 的嵌套 EnumMap
- java - 完成处理队列时停止线程的最佳实践
- python - 如何从运行在 IBM i 上的 Python 连接到 Oracle?
- sql - SQL - 选择具有不同组 ID 的用户对
- python - 为 tabWidget Python 导入负责的小部件页面
- java - 如何从番石榴重试器获取原始错误消息?
- python - Sklearn分类与DecisionTree,如何提高拟合?