频道直达 - 专题 - 新闻 - 基础 - 高级 - 安装 - 技巧 - 数据库 - 手册 - PHP - Linux - Java - MySQL - Apache - 麻辣堂 - 狼盟 - Rails社群 - 搜索 - 下载 - 开源 - 论坛
PHP开发资源网 主页>>PHP基础教程>> 收藏此文 | 收藏本站 | 设为首页

加固PHP环境

来源:www.phpres.com 作者:Angelover 出处:www.phpres.com 2007-7-30 18:33:38 进入讨论组
关 键 词: 环境 PHP CGI 安全 用户 Apache 运行 作为 文件 // 如果

作者:Albert

  PHP作为Apache的模块运行时,Apache本身的安全起主导作用,因此如果配置正确的话,PHP应该是一个十分安全的环境,但是如果PHP是以CGI方式来运行的话,就没有这么安全了。

  本文中提到的操作,对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

  那一章。欢迎进入PHP开发资源论坛讨论。
收藏此文】【 】【打印】【关闭
相关文章
图文推荐
论 坛 资 源
PHP开发资源网奋斗目标
阅读排行:
热门技术文档
最新图文档
本站编辑推荐:(本站开通Delphi4PHP专区,欢迎进入论坛交流!)
编缉最近更新文章
网站赞助商
搜索您感兴趣的内容
 
   网站首页 -  网站地图 -  网站合作 -  手册中心 -  通用网址 -  网站论坛 -  网站投稿 -  友情链接 -  帮助中心
版权所有:PHP开发资源网 © 2003-2008 通用网址:PHP资源网 合作媒体: 赛迪网IT技术
互联网违法和不良信息举报中心 | 不良信息举报信箱