限制PHP对文件夹的文件系统访问

时间:2012-09-25 21:46:27

标签: php apache security shared-hosting

我的场景:我有一个运行Apache的共享主机帐户,用于个人项目。现在我的一个朋友需要一点空间来为他的曲棍球俱乐部建立一个网站。我决定让他在我的帐户上运行它并给他一个FTP帐户,限制他访问public_html / hockey。

我的问题:有没有办法限制他的PHP脚本(在他的曲棍球文件夹中),以至于他们无法访问曲棍球文件夹之外的任何文件?我正在寻找一个解决方案,涉及像php.ini或.htaccess中的配置。请不要回复告诉我他应该尝试不访问该文件夹之外的任何内容。我正试图提高安全性,以防止他的代码中的故意访问和意外安全漏洞。

如果您知道如何在沙盒环境中运行他的内容,那么非常感谢任何建设性的输入。

谢谢,西蒙

3 个答案:

答案 0 :(得分:5)

您可以使用open_basedir配置设置来限制PHP的覆盖范围。例如,要在open_basedir中为每个目录设置httpd.conf,您需要编写

<Directory /var/www/public_html/hockey>
  php_admin_value open_basedir "/var/www/public_html/hockey"
</Directory>

答案 1 :(得分:0)

这很完美..我知道它会在5.6中消失但5.3.x仍然会在很长一段时间内流行,说实话......太多的托管服务提供商过于担心因打破客户的网站而失去业务...我与之合作过的几个客户仍然在PHP 4.x上运行客户......这是极度忽视......

他们确实推动了他们中的一些人使用了5.2 ..它们在推动之前就已经过时了......但事实仍然是你无法将整个客户群推向新版本..大多数他们不是开发商而且花了他们钱,而且如果他们因为你的强迫而取消了它会导致资金损失..

我已经采用了在我们的系统上隔离共享帐户的尝试..这就是为什么这很有用..我想尽可能地锁定5.3-5.5用户..所以我使用php-fcgi .. suexec ..等..所以在他们的vhost中执行这个指令似乎是下一个最好的隔离级别!

我已经在我的虚拟实验室中对此进行了测试,它似乎完全符合我的要求..它使人们无法从/ etc中获取glob()文件并找到我们的passwd文件以及我们的其他虚拟主机可能想要暴力......

答案 2 :(得分:0)

NO!

您不能(99%)使用相同的CPANEL /帐户实现这一目标。 open_basedirallowOverridesafe_mode甚至还不够!  cgi / perl / cron-jobs仍然没有受到保护!

您最好使用转销商(WHM)Cpanel帐户或DirectAdmin(cpanel备用)多用户帐户。