限制在PHP中访问父目录

时间:2013-10-23 20:02:30

标签: php security

我从其他问题中看到,我可以设置open_basedir来限制对父文件夹的访问。但是,我决定做一些实验,找出我能做些什么。

首先测试是否可以使用open_basedir函数手动设置ini_set。值得庆幸的是,似乎这个函数可以设置更严格的基础,但它不能用于减少限制。这一切都很好。

然而,我的下一次测试有些令人不安:

ini_set("open_basedir","/path/to/desired/root/limited");
echo file_get_contents("/some/outsite/file.txt"); // error: basedir restriction
echo `cat /some/outside/file.txt`; // outputs the file

我似乎无法找到限制shell访问内容的任何方法。

所以我想我真正的问题是,我该怎样做才能确保父文件夹是安全的?显然,open_basedir并没有削减它。

2 个答案:

答案 0 :(得分:1)

open_basedir通常不会限制后门​​访问。 PHP中有一个“safe_mode”阻止了诸如system()和exec()之类的调用。完整列表:http://www.php.net/manual/en/features.safe-mode.functions.php

但是从PHP 5.3开始就被弃用了,因为有很多方法可以解决它。

您可以使用suPHP和chroot,如另一个StackOverflow答案所示:PHP safemode alternative

“更好的方法是使用suphp将您的应用程序作为被监禁的用户运行。这使用操作系统的安全性来保护您的应用程序。您将PHP代码作为无法访问shell的帐户运行。您从该用户chmod 500 -R /拥有的所有内容中删除写入权限。或者更进一步,在chroot中运行您的应用程序。“

有用的链接:

答案 1 :(得分:0)

好吧,我怀疑你甚至无法在单个CPANEL /账户中实现这一点。 这是一个恐怖(你必须设置open_basedirallowOverridesafe_mode,甚至cgi / perl / cron-jobs也需要其他限制......

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