先看这一段简单的代码
<?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。

PHP全局变量与SESSION 漏洞(global 与 session)的更多相关文章

  1. PHP对于Session漏洞的防范

    目前,基于PHP的网站开发已经成为目前网站开发的主流,本文笔者重点从PHP网站攻击与安全防范方面进行探究,旨在减少网站漏洞,希望对大家有所帮助! 一.常见PHP网站安全漏洞 对于PHP的漏洞,目前常见 ...

  2. tomcat session漏洞反序列化详解

    1. 条件1)攻击者可以控制服务器上的文件名/文件内容2)tomcat context配置了persistencemanager的fileSotre3) persistenceManager 配置了s ...

  3. php session跨页面传递 session值丢失问题

    .session_start();应该尽量放置到页面的顶部: .如果php.ini里面没有配置 session Autostart的话,每次会话之前,都得手动开启session:session_sta ...

  4. php 的session机制 和ecshop session机制

    一.默认机制,用磁盘文件来实现PHP会话.php.ini配置:session.save_handler = files 1.session_start() A. session_start()是ses ...

  5. Discuz! 6.x/7.x 全局变量防御绕过漏洞

    受影响产品: Discuz! 6.x/7.x 漏洞描述: 由于php5.3.x版本里php.ini的设置里request_order默认值为GP,导致Discuz! 6.x/7.x 全局变量防御绕过漏 ...

  6. 懒加载session 无法打开 no session or session was closed 解决办法(完美解决)

           首先说明一下,hibernate的延迟加载特性(lazy).所谓的延迟加载就是当真正需要查询数据时才执行数据加载操作.因为hibernate当中支持实体对象,外键会与实体对象关联起来.如 ...

  7. 【荐】PHP Session和Cookie,Session阻塞,Session垃圾回收,Redis共享Session,不推荐Memcached保存Session

    什么是 Session 在 web 应用开发中,Session 被称为会话.主要被用于保存某个访问者的数据. 由于 HTTP 无状态的特点,服务端是不会记住客户端的,对服务端来说,每一个请求都是全新的 ...

  8. Hibernate之Session缓存以及操作Session缓存的相关方法

    1.Session概述 A.Session 接口是 Hibernate 向应用程序提供的操纵数据库的最主要的接口, 它提供了基本的保存, 更新, 删除和加载 Java 对象的方法. B. Sessio ...

  9. 客户端session与服务端session

    会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端 ...

  10. JSP session 获取id和session持续时间

    <%@ page contentType="text/html;charset=utf-8" pageEncoding="utf-8"%> < ...

随机推荐

  1. python 字符串报错问题

    http://jingyan.baidu.com/article/25648fc1a96dd49191fd00c0.html 解决'ascii' codec can't encode characte ...

  2. OLI 课程 & Java入学考试的五道题

    Unit  1:: Programming with Java ✔️ 机械.自动.不需要智慧地执行原始的内置指令. 字节码相同,JVM不同(体现平台) ✖️ In modern computers i ...

  3. [leetcode]253. Meeting Rooms II 会议室II

    Given an array of meeting time intervals consisting of start and end times [[s1,e1],[s2,e2],...] (si ...

  4. Ubuntu18.04安装Virtualenv虚拟环境

    在Ubuntu18.04安装Virtualenv虚拟环境 [实验环境]: 在这台电脑上已经安装了python3 [安装参考] 1.查看是否已安装virtualenv virtualenv --vers ...

  5. 读写大“二进制”文件,不必申请很大内存(fopen,fread,fwrite,fclose)

    <?php /** * 读写大二进制文件,不必申请很大内存 * 只有读取到内容才创建文件 * 保证目录可写 * * @param string $srcPath 源文件路径 * @param s ...

  6. mybatis框架入门程序:演示通过mybatis实现数据库的插入操作中实现返回结果的获取

    1.mybatis实现数据库的插入操作可以查看https://www.cnblogs.com/wyhluckdog/p/10149895.html这篇博文,这里面的插入操作没有返回结果,所以这篇博文就 ...

  7. mysql中timestamp简单用法

    该时间字段有比较特殊的地方,显示内容datetime字段一样.当取值为null或者不赋值时,显示当前系统时间,然后在其他地区读取的时候会根据当地的时间转换成当地的系统时间.

  8. PHP安装memcache扩展

    1.下载memcache.dll扩展 http://pecl.php.net/package/memcache/3.0.8/windows .下载完成之后, 将其中的php_memcache.dll ...

  9. Laravel 引入自定义类库或第三方类库

    强烈建议引入的类 都是含有命名空间的,这样使用起来就不会出现重名的情况.!!当然,没有命名空间也可以使用,就是类名字(非文件名)最好复杂一些.(重复也不要紧,程序会自己判断) laravel5.4中如 ...

  10. 解析config文件 练手代码

    解析一个如下的CONFIG文件 #config.txt #SHTTPD Web 服务器配置文件示例 #侦听端口 ListenPort = 80 #最大并发访问客户端数目 MaxClient = 8 # ...