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

配置PHP应用程序以安全运行多个站点,php,symfony,nginx,Php,Symfony,Nginx,我有一个关于PHP的问题,但我们需要限制PHP脚本安全运行。理想情况下应该是这样的: 核心代码将位于公共html之外,如/etc/app/ 所有站点将使用相同的核心。每个站点“用户”应仅限于公用文件夹内,但核心代码应可读、可执行,但不可编辑 我认为我们可以将其添加到OpenBase目录,或者将其符号链接到每个站点,并将其与所有站点用户设置在同一组中(因此具有读取/执行权限) 我对这种环境真的很陌生,所以我想知道我是否忽略了什么 ---编辑 更多信息: 我用的是php5 fpm 我遵循以下步骤以确

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

  • 核心代码将位于公共html之外,如/etc/app/

  • 所有站点将使用相同的核心。每个站点“用户”应仅限于公用文件夹内,但核心代码应可读、可执行,但不可编辑

  • 我认为我们可以将其添加到OpenBase目录,或者将其符号链接到每个站点,并将其与所有站点用户设置在同一组中(因此具有读取/执行权限)

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

    ---编辑

    更多信息:

  • 我用的是php5 fpm
  • 我遵循以下步骤以确保脚本在特定用户/组下运行
  • 通过安全运行,我的意思是,即使允许用户上传自己的脚本,他们也不应该有权力做任何可能影响其他帐户的事情(例如将恶意文件放在其他帐户上,编辑核心文件等)

  • 一种方法是将symofny2的路径放在
    php.ini
    文件的
    include\path
    指令中。因此,当您使用
    include
    时,
    require
    PHP将通过查找
    include\u路径
    s来尝试找到所需的文件并提供它

    你唯一需要做的就是保护这些文件

    • chown-R root.root/path/to/symfony2\u core
    • find/path/to/symfony2_core-type f-name“*.php*”-execchmod755{}

    请记住,不要让
    apache
    php
    成为文件的所有者,因为这可能会被用作漏洞利用。(即,如果http服务器是所有者,在某些情况下,用户只需执行
    shell\u exec('echo“在这里做一些讨厌的事。”>/path/to/symfony2\u core/Kernel.php')
    )即可覆盖文件。

    我假设您使用的是
    php5 fpm
    ?安全运行是什么意思。这在某种程度上取决于您是自己编写代码还是托管其他人的代码。。。如果您不知道具体运行的是什么,那么您需要采取一些额外的操作,比如chrooting php、创建不同的用户、禁用函数、设置适当的权限……我编辑了我的问题,希望能让问题更清楚。如果还不清楚,请告诉我。