zoukankan      html  css  js  c++  java
  • PHP全局变量与SESSION 漏洞(global 与 session)

    先看这一段简单的代码
    <?php
    session_start();$_SESSION[‘isadmin’]=’yes’;$isadmin=’no’;echo $_SESSION[‘isadmin’];?>
    当php.ini里配置register_globals = Off 时,
    没任何问题,
    输出yes但是
    当php.ini里配置register_globals = On 的时候,
    第一次运行输出yes
    而刷新一下,则显示的是no显然这是不正常的,
    这是个很奇怪的问题,
    如果说是$isadmin=’no’; 改变了SESSION,
    那么为什么第一次会显示yes呢?都知道:当配置register_globals = On 的时候,
    通过xxx.php?id=123 访问时,程序会自动创建变量id
    那么自动创建的变量会不会改变SESSION呢?
    测试代码
    <?php
    //xxx.php
    session_start();
    echo $_SESSION[‘id’];
    ?>
    通过xxx.php?id=123 访问,没任何输出,
    还好,不然不知道将有多少
    采用SESSION 做登录的
    而PHP配置register_globals 为On 的网站
    将被随便登录。还有两个常用的函数import_request_variables() 和extract()
    import_request_variables — 将GET/POST/Cookie 变量导入到全局作用域中
    extract —  从数组中将变量导入到当前的符号表
    <?php
    //xxx.phpimport_request_variables(‘G’);
    echo $id;?>
    当通过xxx.php?id=123访问的时候,
    就算register_globals 设为Off
    也是会输出123extract($_GET) 与import_request_variables(‘G’) 功能相似那么试试import_request_variables() 与extract()创建的变量会不会影响SESSION

    呢?
    测试代码
    <?php
    //xxx.php
    session_start();import_request_variables(‘G’);echo $_SESSION[‘id’];
    ?>

    当通过xxx.php?id=123访问程序,
    没有输出,再用extract($_GET)代替import_request_variables(‘G’)测试,
    还是没输出,这一点又很奇怪了,因为测试
    <?php
    session_start();
    $arr=array(‘id’=>123);
    extract($arr);
    echo $_SESSION[‘id’];
    ?>
    register_globals 为On 时
    会输出123看来同样是数组,
    extract 处理$_GET 与处理定义的数组
    用的是不一样的方法。结论:
    register_globals 为On 的时候,
    用import_request_variables(‘G’)和extract($_GET)创建的变量是不会改变SESSION的。总结:漏洞只存在于PHP配置register_globals = On的时候,定义的变

    量会改变同名的SESSION。

  • 相关阅读:
    zookeeper集群搭建
    Redis集群管理
    postman的使用
    python接口自动化:requests+ddt+htmltestrunner数据驱动框架
    python实现建立websocket通信
    python实现建立soap通信(调用及测试webservice接口)
    python接口自动化:响应内容中json字符串对象的处理
    python接口自动化:调试接口的代码(无token情况下)
    python接口自动化:https请求,取消警告
    python接口自动化:对外接口sign签名
  • 原文地址:https://www.cnblogs.com/anbus/p/9988552.html
Copyright © 2011-2022 走看看