配置PHP应用程序以安全地运行多个站点

时间:2013-11-01 17:54:23

标签: php symfony nginx

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

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

  2. 所有网站都将使用相同的核心。每个站点的“用户”应仅限于公共文件夹中,但核心中的代码应该是可读且可执行但不可编辑

  3. 我想我们可以将它添加到open base目录中,或者可以将它符号链接到每个站点并将其设置在与所有站点用户相同的组中(因此具有读取/执行权限)

    我对这种环境真的很陌生,所以我想知道我是否忽视了这种情况?

    ---编辑

    更多信息:

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

1 个答案:

答案 0 :(得分:0)

执行此操作的一种方法是在include_path文件中的php.ini指令中简单地放置symofny2的路径。因此,当您使用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')就可以覆盖文件)