在此SO answer之后,不应允许运行Apache的用户写入任何文件。从安全性的角度来看,这是非常好的,但是允许文件上传的PHP Web应用程序如何在这种设置下工作?

一种虚拟化工具,例如linux-vserverOpenVZ(如建议的here)将是一种选择,但是我不确定性能是否会受到影响,因为我的linux框已经在virtual machine内部运行。

我想到的另一种方法是使用在uploads文件夹上具有写权限的用户下运行的进程,并使我的PHP脚本通过IPC与之通信。

我倾向于第二种解决方案,但是在我开始开发该应用程序并在使它正常工作且没有崩溃之前碰壁几次之前,我想知道是否有更简单的解决方案。

最佳答案

通过对单个上载文件夹的写访问权,向用户或组授予php代码执行权限,并禁止该目录的php执行。

如果您使用的是mod_php,它将是Apache用户。

如果您使用的是php-fpm,则它可能默认为Apache用户,但可以更改(即使对于每个池,如果您有多个用于不同应用程序/站点的池),也可以更改它。

09-04 21:25
查看更多