我几乎可以肯定PHP总是能够在服务器上的任何地方运行并对任何文件执行任何操作,但我想知道是否有办法将其限制为仅在一个文件夹中工作以及需要什么?< / p>
我的意思是我已经说了50个WordPress安装,50个文件夹。如果来自不受信任的插件的病毒只影响1个安装 - 它也会立即转到另外49个(因为PHP可以扫描服务器上的所有目录)。
有没有办法阻止这种情况?如果病毒破坏了1个WordPress的安装 - 我希望它只留在那里。
我的托管服务提供商表示,如果不购买其他服务器,这是不可能的。你有什么看法?
答案 0 :(得分:5)
使用php-fpm你可以chroot php worker(绝对分离)并给每个php应用程序自己的用户和php配置(超时,内存限制等)。您不必使用chroot来拥有唯一用户。使用简单的文件权限,您可以使webroot对于不是该webroot的专用用户的任何人都不可读。此问题并非特定于Apache,适用于支持fastcgi的任何其他网络服务器。
更容易设置的方式可能是继续使用php的open_basedir(由于php的开发人员经常修复与此功能相关的bugs,因此存在安全性open_basedir
的争议)
答案 1 :(得分:3)
您可以安装suEXEC并以FastCGI模式运行PHP。使用此配置,您可以在不同用户下运行PHP实例。
我自己没有尝试过这个教程,但它对我来说很好看:How to set up PHP FastCGI with suEXEC on Debian