我从其他问题中看到,我可以设置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
并没有削减它。
答案 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_basedir
,allowOverride
,safe_mode
,甚至cgi / perl / cron-jobs也需要其他限制......
您最好使用转销商(WHM)Cpanel帐户或DirectAdmin(cpanel备用)多用户帐户。