如何保护 Apache 服务器免受稍微不受信任的 PHP 代码的攻击?

如何保护 Apache 服务器免受稍微不受信任的 PHP 代码的攻击?

我遇到了一种不寻常的情况,我需要多个用户能够在我的 Apache 服务器上上传和执行 PHP 代码,但我不能允许一个用户访问另一个用户的 PHP 源(如果具体的例子能让你感觉更好,想象一下我正在举办一场 PHP 编程竞赛)。

以下是我目前在 PHP.ini 中的内容:

disable_functions = readfile,fpassthru,文件,file_get_contents,
 系统、fopen、符号链接、重命名、复制、exec、passthru、pcntl_exec、
 backtick_operator、shell_exec、popen、proc_open

我需要向此列表添加哪些其他功能,以防止 PHP 代码访问本地文件(以及其他 PHP 源?)?

答案1

另请查看http://www.suphp.org/它使用用户权限而不是运行 Web 服务器的用户权限来执行 PHP 脚本。如果您确保 Web 服务器可以读取目录(但不一定是 PHP 文件本身),那么它将能够使用用户权限执行这些文件。在这种情况下,其他用户应该无法读取或访问它们。这应该是一种更优雅、更安全的处理方式。

答案2

听起来你需要启用 PHP安全模式,这将禁用所有相关功能。

(请注意,此功能在 5.3 中已弃用并在 PHP6 中删除)

答案3

我不会尝试在 PHP 中处理这个问题,而是会提升一两层,并使用 Apache + unix 帐户来隔离事物 - 例如,使用 suexec保持用户进程分离。

相关内容