1

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

第一个测试是看我是否可以open_basedir使用该ini_set功能手动设置。值得庆幸的是,这个函数似乎可以设置一个更具限制性的 basedir,但它不能用于减少限制。这都很好。

然而,我的下一个测试有点令人不安:

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不剪。

4

2 回答 2

1

open_basedir 通常不会像那样限制后门访问。PHP 中有一个“safe_mode”,它阻止了像 system() 和 exec() 这样的调用。完整列表在这里:http ://www.php.net/manual/en/features.safe-mode.functions.php

但从 PHP 5.3 开始,它已被弃用,因为有很多方法可以绕过它。

正如另一个 StackOverflow 答案所建议的那样,您可以使用 suPHP 和 chroot:PHP 安全模式替代方案

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

有用的链接:

于 2013-10-23T20:33:53.677 回答
0

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

您最好使用 Reseller(WHM) Cpanel 帐户,或 DirectAdmin(cpanel 替代) 多用户帐户。

于 2015-05-27T17:36:55.837 回答