需要注意的几个PHP漏洞小结

  作者:bea

需要注意的几个PHP漏洞 几个重要的php.ini选项   Register Globals   php>=4.2.0,php.ini的register_globals选项的默认值预设为Off,当register_globals的设定为On时,程序可以接收来自服务器的各种环境变量,包括表单提交的变量,而且由于PHP不必事先初始化变量的值,从而导致很大的安全隐患.   例1: 代码如下:   //check_admin()用于检查当前用户权限,如果是admin设置$
需要注意的几个PHP漏洞
几个重要的php.ini选项
  Register Globals
  php>=4.2.0,php.ini的register_globals选项的默认值预设为Off,当register_globals的设定为On时,程序可以接收来自服务器的各种环境变量,包括表单提交的变量,而且由于PHP不必事先初始化变量的值,从而导致很大的安全隐患.
  例1:


代码如下:



 //check_admin()用于检查当前用户权限,如果是admin设置$is_admin变量为true,然后下面判断此变量是否为true,然后执行管理的一些操作

 //ex1.php

 

 if (check_admin())

 {

 $is_admin = true;

 }

 if ($is_admin)

 {

 do_something();

 }

 ?>


  这一段代码没有将$is_admin事先初始化为Flase,如果register_globals为On,那么我们直接提交 http://www.sectop.com/ex1.php?is_admin=true,就可以绕过check_admin()的验证
  例2:


代码如下:



 //ex2.php

 

 if (isset($_SESSION["username"]))

 {

 do_something();

 }

 else

 {

 echo "您尚未登录!";

 }

 ?>




代码如下:



 //ex1.php

 

 $dir = $_GET["dir"];

 if (isset($dir))

 {

 echo "";

 system("ls -al ".$dir);

 echo "";

 }

 ?>


 
 mixed eval(string code_str) //eval注入一般发生在攻击者能控制输入的字符串的时候
  //ex2.php


代码如下:



 

 $var = "var";

 if (isset($_GET["arg"]))

 {

 $arg = $_GET["arg"];

 eval("$var = $arg;");

 echo "$var =".$var;

 }

 ?>






有用  |  无用

猜你喜欢