2012-09-25 94 views
3

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

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

如果你知道如何在沙箱环境中运行他的内容,那么任何有建设性的输入都将不胜感激。

谢谢,西蒙

回答

2

可以使用open_basedir配置设置来限制PHP的范围。例如,要设置open_basedir每个目录中httpd.conf你会写

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

这正是我一直在寻找的,谢谢! – usimon

+0

文档:http://php.net/manual/en/ini.core.php#ini.open-basedir – fooquency

+0

@fooquency:那个链接已经在那里:) – Jon

0

这是完美的。我得到它会在5.6消失,但5.3.x仍然会是流行了很长的时间让说实话..太多的托管服务提供商通过打破他们客户的网站而担心失去业务......我曾与之合作过的几个客户仍然在PHP 4.x上运行..这是极端被忽视的..

他们确实迫使他们中的一些人达到5.2 ..他们在推进之前很久就已经过时了......但事实仍然是,你不能仅仅将你的整个客户群推到一个新版本中。他们大多数不是开发人员d它花费他们的钱,并且如果他们因为你强制它而取消,它会转化为损失。

我已经通过尝试隔离我们系统上的共享帐户..这就是为什么这是有用的..我想锁定5.3-5.5的用户最好的我可以..所以我使用php-fcgi .. suexec ..等..所以在他们的虚拟主机执行这个指令似乎是下一个最好的隔离级别!

我在我的虚拟实验室测试了它,它似乎正是我想要的。它使人们无法从/ etc中找到glob()文件,并找到我们的passwd文件以及其他虚拟主机他们可能想要蛮力...

0

不!

你不能(99%)以相同的CPANEL /账户实现这一目标。 open_basedirallowOverridesafe_mode甚至还不够! cgi/perl/cron-jobs仍然未受保护!

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