【问题标题】:Configure PHP application to safely run for multiple sites配置 PHP 应用程序以安全地为多个站点运行
【发布时间】:2013-11-02 09:57:21
【问题描述】:

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

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

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

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

我对这种设置真的很陌生,所以我想知道我是否忽略了一些事情?

--- 编辑

更多信息:

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

【问题讨论】:

  • 我假设您使用的是php5-fpm ?
  • 安全运行是什么意思。这取决于您是自己编写代码还是托管其他人的代码......如果您不知道到底在运行什么,您需要采取一些额外的操作,例如 chrooting php,创建一个不同的用户,禁用功能,设置适当的权限...
  • 我编辑了我的问题,希望能更清楚。如果还不清楚,请告诉我。

标签: php symfony nginx


【解决方案1】:

一种方法是简单地将 symofny2 的路径放入 php.ini 文件中的 include_path 指令中。所以当你使用includerequire PHP 会尝试通过在include_paths 中查找并提供所需的文件。

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

  • 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')来覆盖文件)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-17
    • 1970-01-01
    • 2020-01-06
    • 1970-01-01
    相关资源
    最近更新 更多