我们看下面这一段代码:
1 <?php
2 session_start();
3 $_SESSION['isadmin']='yes';
4 $isadmin='no';
5 echo $_SESSION['isadmin'];
6 ?>
当php.ini里配置 register_globals = Off 时,
没任何问题,
输出 yes
当php.ini里配置 register_globals = On 的时候,
第一次运行输出 yes
而刷新一下,则显示的是 no
显然这是不正常的,
这是个很奇怪的问题,
如果说是 $isadmin='no'; 改变了SESSION,
那么为什么第一次会显示yes呢?
原因:register_globals 为 On 的时候,
用import_request_variables('G')和extract($_GET)创建的变量是不会改变SESSION的。
总结:漏洞只存在于PHP配置register_globals = On的时候,定义的变量会改变同名的SESSION。
posted on 2007-11-13 23:21
minidxer 阅读(1815)
评论(5) 编辑 收藏 引用 网摘