将 PHP 应用程序配置为为多个站点安全运行


Configure PHP application to safely run for multiple sites

我有一个关于PHP的问题,但我们需要限制PHP脚本安全运行。理想情况下,它应该是这样的:

  1. 核心代码将位于public_html之外,如/etc/app/

  2. 所有站点将使用相同的核心。每个站点"用户"应仅在公用文件夹中受到限制,但核心中的代码应该是可读和可执行的,但不可编辑

我想我们可以将其添加到打开基本目录,或者可以将其符号链接到每个站点并将其设置为与所有站点用户相同的组(因此具有读取/执行权限)

我对这种设置真的很陌生,所以我想知道我是否忽略了什么?

---编辑

更多信息:

  1. 我正在使用php5-fpm
  2. 我正在遵循此tut以确保脚本在特定用户/组下运行
  3. 通过安全运行,我的意思是,即使允许用户上传自己的脚本,他们也不应该有权做任何可能影响其他帐户的事情(例如将恶意文件放在其他人的帐户上,编辑核心文件等......
一种方法

是简单地将 symofny2 的路径放在 php.ini 文件的 include_path 指令中。所以当你使用include 时,require PHP 会尝试通过查找include_path来找到所需的文件并提供它。

您唯一需要做的就是保护文件

  • chown -R root.root /path/to/symfony2_core
  • find /path/to/symfony2_core -type f -name "*.php*" -exec chmod 755 {} ';

请记住,不要apachephp文件的所有者,因为这可用作漏洞利用。(即,如果HTTP服务器是所有者,在某些情况下,用户只需执行shell_exec('echo "do something nasty here." > /path/to/symfony2_core/Kernel.php')即可覆盖文件)