|
|
※阅读文章※ |
加固 PHP 环境作者:徐永久(albertxu@bigfoot.com) [文章出自: www.fanqiang.com] PHP 作为Apache 的模块运行时,Apache 本身的安全起主导作用,因此如果配置正确的话,PHP 应该是一个 十分安全的环境,但是如果 PHP 是以CGI方式来运行的话I,就没有这么安全了。 本文中提到的操作,对 Unix 和 Windows 都适用。 一、作为 Apache 模块来运行 因为一般说来,Apache 会以 "nobody" 或者 "www" 来运行,所以,PHP 作为模块是十分安全的。 如果 PHP 在虚拟主机环境下,可能会产生用户能浏览其他用户文件的危险。一个简 单的脚本如下: // 假定文档根位于 /usr/local/websites/mydomain $location = '../'; // 到上一级目录 $parent = dir($location); // 显示当前目录: /usr/local/websites while($entry = $parent->read()) { echo $entry . ' '; } $parent->close(); ?> 这样,只要修改$location,用户就可以浏览虚拟主机上所有其他用户的文件了。为了减少这样的危险,我们需 要看一下 php.ini ,修改其中的 safe_mode, doc_root和 usr_dir 参数,把用户限制在他自己的虚拟主机环境下: safe_mode = On doc_root = /usr/local/apache/htdocs user_dir = /home/albertxu/htdocs 二、作为 CGI 把 PHP 以 CGI 方式运行需要十分小心,可能会泄露你不想让人知道的信息。 第一件事情要注意的就是一定要把执行文件放到文档根目录以外的地方。例如 /usr/local/bin,因此所有的 CGI 文件开头必须带有: #!/usr/local/bin/php 防止用户直接调用 CGI 的办法是在 Apache 中强迫 CGI 重定向: Action php-script /cgi-bin/php.cgi AddHandler php-script .php 这会把下面的 URL http;//example.com/mywebdir/test.htm 转换为: http://example.com/cgi-bin/php/mywebdir/test.htm 在以 CGI 方式编译 PHP 时,最好采用下面的选项: --enable-force-cgi-redirect 本文讨论的是有关 PHP 的安全问题,详细的安全信息可以参考 PHP 老家上手册中关于安全的 http://www.php.net/manual/en/security.php 那一章。 文章加入时间: 2004-11-17 15:01:51 责任编辑: w9 (2424 人次查阅) |