我在大学的系统管理部门工作,偶然发现了一些可能很常见的东西,但对我来说是很震惊的。
所有public_html目录和Web区域均存储在AFS上,并具有Web服务器的读取权限。由于允许用户在他们的public_html中包含php脚本,因此这意味着他们可以从php中访问彼此的文件(和主要的Web文件!)。
这不仅使任何.htaccess密码保护都变得完全无用,而且还允许用户读取包含mysql数据库密码和类似敏感信息的php源文件。或者,如果他们发现其他人拥有Web服务器具有写访问权的目录(例如,用于个人日志或保存提交的表单数据),则可以将文件存储在这些帐户中。
一个简单的例子:
<?
header("Content-type: text/plain");
print file_get_contents("/afs/example.com/home/smith/public_html/.htpasswd");
?>
这是个常见的问题吗?您通常如何解决呢?
更新:
感谢您的输入。不幸的是,似乎没有简单的答案。在这样的大型共享环境中,可能不应给用户太多选择。我能想到的最好的方法是在所有“ public_html”目录的主配置中设置“ open_basedir”,运行suphp并仅允许使用干净的php(无cgi脚本,使用反引号运行外部命令等)。
像这样更改策略会破坏很多事情,并且很有可能使用户抓住他们的干草叉并追我们。。。如果我们决定如何更改设置,我将与同事讨论并在此处进行更新。
open_basedir
在生产共享主机系统上使用了以下解决方案,但我们将每个人都分成了自己的虚拟主机-不确定它是否适用于单个目录...