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。
PHP全局变量与SESSION 漏洞(global 与 session)的更多相关文章
- PHP对于Session漏洞的防范
目前,基于PHP的网站开发已经成为目前网站开发的主流,本文笔者重点从PHP网站攻击与安全防范方面进行探究,旨在减少网站漏洞,希望对大家有所帮助! 一.常见PHP网站安全漏洞 对于PHP的漏洞,目前常见 ...
- tomcat session漏洞反序列化详解
1. 条件1)攻击者可以控制服务器上的文件名/文件内容2)tomcat context配置了persistencemanager的fileSotre3) persistenceManager 配置了s ...
- php session跨页面传递 session值丢失问题
.session_start();应该尽量放置到页面的顶部: .如果php.ini里面没有配置 session Autostart的话,每次会话之前,都得手动开启session:session_sta ...
- php 的session机制 和ecshop session机制
一.默认机制,用磁盘文件来实现PHP会话.php.ini配置:session.save_handler = files 1.session_start() A. session_start()是ses ...
- Discuz! 6.x/7.x 全局变量防御绕过漏洞
受影响产品: Discuz! 6.x/7.x 漏洞描述: 由于php5.3.x版本里php.ini的设置里request_order默认值为GP,导致Discuz! 6.x/7.x 全局变量防御绕过漏 ...
- 懒加载session 无法打开 no session or session was closed 解决办法(完美解决)
首先说明一下,hibernate的延迟加载特性(lazy).所谓的延迟加载就是当真正需要查询数据时才执行数据加载操作.因为hibernate当中支持实体对象,外键会与实体对象关联起来.如 ...
- 【荐】PHP Session和Cookie,Session阻塞,Session垃圾回收,Redis共享Session,不推荐Memcached保存Session
什么是 Session 在 web 应用开发中,Session 被称为会话.主要被用于保存某个访问者的数据. 由于 HTTP 无状态的特点,服务端是不会记住客户端的,对服务端来说,每一个请求都是全新的 ...
- Hibernate之Session缓存以及操作Session缓存的相关方法
1.Session概述 A.Session 接口是 Hibernate 向应用程序提供的操纵数据库的最主要的接口, 它提供了基本的保存, 更新, 删除和加载 Java 对象的方法. B. Sessio ...
- 客户端session与服务端session
会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端 ...
- JSP session 获取id和session持续时间
<%@ page contentType="text/html;charset=utf-8" pageEncoding="utf-8"%> < ...
随机推荐
- 经典的图像匹配算法----SIFT
经典的图像匹配算法----SIFT http://mp.weixin.qq.com/s?__biz=MzIzNDM2OTMzOQ==&mid=2247484319&idx=1& ...
- css常用属性总结:颜色和单位
在css代码编写中,估计颜色和单位是必不可少的,然而在css中关于颜色和单位值的写法有很多种写法,所以有必要把它弄清楚. 颜色 当初我在初学前端的时候,就会冒出一个疑问“我该如何设置网页颜色?”,一般 ...
- python's object model
[python's object model] 1.object.__init__(self[, ...]) 如果subclass没有实现__init__,那么python类在实例化的时 ...
- Java中的几种设计模式
如果从事JAVA相关的开发,都不可避免的要用到抽象和封装,这是JAVA的一个特点,同时也是每个开发者必须掌握的,JAVA是这样,Android更是如此.而设计模式就是告诉我们应该如何写出高效且更具应用 ...
- oracle返回最大值一条记录
虽然网上例子很多,但是试过多种办法都无效,原代码出处: https://blog.csdn.net/qyshibb/article/details/73332075 这个例子简单有效 select p ...
- quartz cron表达式demo
1.每天0点5分开始,以后每隔15分钟启动一次,23:50停止: 0 5/15 0-23 * * * cron表达式,由于从5分开始,每15分钟执行一次,到了23点的最后一次执行时间正好是23:50. ...
- weblogic 初始化
weblogic无法启动,或是忘记了登陆密码,需要初始化,可以删除weblogic配置然后重新生成配置.步骤如下 1> 找到weblogic的启动路径,打开jdeveloper,run后,查看日 ...
- 搭建jfinal框架时报 Could not load driverClass com.mysql.jdbc.Driver
搭建jfinal框架时报 Could not load driverClass com.mysql.jdbc.Driver 没有加载MySQL的驱动,你有没有把mysql的驱动包放到你项目的WEB-I ...
- Javascript 知识遗漏点梳理。
先说一下我之前学习Javascript的学习经历,然后就是最近几天学到以前没有注意的知识遗漏点. 1.之前的学习经历和方法: 最开始是看了Javascript DOM编程与艺术这本书,把慕课网上的&l ...
- view是视图层+action是控制层+service是业务层+dao是数据访问层。