先看这一段简单的代码
<?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. 学习IIS & MVC的运行原理 (转)

    我一直疑惑于以下问题,从客户端发出一个请求,请求到达服务器端是怎样跟iis衔接起来的,而iis又是怎样读取我发布的代码的,并返回服务器上的文件.这其中是怎样的一个处理过程. 1:当你从浏览器中输入一个 ...

  2. Java Web 从入门到精通(明日科技)

    目录结构: 第一章:Java Web 应用开发概述 第二章:html与css网页开发基础 第三章:JavaScript脚本语言 第四章:搭建开发环境 第五章:JSP语言基础 第六章:JSP内置对象 第 ...

  3. k8s 1.10 关于rbac的坑

    apiserver  启动加上--authorization-mode=RBAC 开启rbac 会生成默认role,最高权限位cluster-admin的cluster role 再关闭rbac(不加 ...

  4. 使用BMFont

    [使用BMFont] 参考1说明如何根据ttf字体生成fnt.png. 参考2说明如何根据自定义图片生成fnt.png. 分三步: 1.Edit->Open Image Manager.导入需要 ...

  5. Multithread之为什么spinlock必须是volatile?

    [Multithread之为什么spinlock必须是volatile?] 1.编译器的优化 在本次线程内,当读取一个变量时,为提高存取速度,编译器优化时有时会先把变量读取到一个寄存器中:以后再取变量 ...

  6. What I'm Researching

    [What I'm Researching] 1.C++11 2.NLP 3.android dev 4.warm up 5.PageRank

  7. tar使用

    [tar使用] 1..tar.gz文件 压缩:tar -czvf dstFileName.tar.gz a.txt b.txt …… 解压:tar -xzvf fileName.tar.gz 2..t ...

  8. 如何阅读jdk及开源框架的源码?

    1.熟悉设计模式 可以边读源码 ,边熟悉设计模式,理解编程思想. jdk中对应的设计模式见:http://blog.csdn.net/gtuu0123/article/details/6114197 ...

  9. centos7 搭建svn服务

    linux(centos)下SVN服务器如何搭建?说到SVN服务器,想必大家都知道,可以是在LINUX下如何搭建SVN服务器呢?那么今天给大家分享一下linux(centos)搭建SVN服务器的思路! ...

  10. Android 集成支付宝第三方登录

    前言: 在集成支付宝支付的时候遇到一点小麻烦,先在此记录供大家参考 1.授权 支付宝第三方登录需要在后台进行授权,在查看授权的时候我们一定要看清楚时候真的已经获得了权限(我在没有获取权限的情况下集成的 ...