0
点赞
收藏
分享

微信扫一扫

PHP代码审计——超全局变量


一、全局变量

全局变量就是在函数外面定义的变量,不能在函数中直接使用,因为他的作用域不会到函数内部,所以在函数内部使用的时候常常看到类似 global $a。

global的作用是定义全局变量,但是这个全局变量不是应用于整个网站,而是应用于当前页面,包括include或require的所有文件。但是在函数体内定义的global变量,函数体内可以使用,在函数体外定义的global变量不能在函数体内使用,具体看下面示例。

(1)在函数体内定义global变量,函数体内可以使用。

PHP代码审计——超全局变量_数组


(2)在函数体外定义global变量,函数体内不可以使用,但是可以通过超全局变量$GLOBALS使用

PHP代码审计——超全局变量_函数体_02

二、超全局变量

$GLOBALS用于在PHP脚本中的任意位置访问全局变量(从函数或方法中均可)

超全局变量作用域在所有脚本都有效,所以,在函数可直接使用,比如_SERVER都是超全局变量,除了_POST、_COOKIE等之外的超全局变量保存在$GLOBALS数组中

GLOBALS 之所以在全局范围内存在,是因为 GLOBALS 的写法,比如变量GLOBALS[‘a1’]。

示例:先使用global定义

PHP代码审计——超全局变量_全局变量_09


使用$GLOBALS定义全局变量

PHP代码审计——超全局变量_全局变量_10


PHP代码审计——超全局变量_数组_11


PHP代码审计——超全局变量_函数体_12

三、常见超全局变量

常见超全局变量:_REQUEST、_ENV、_SERVER、_FILES、$_COOKIE

POST(隐藏传参)
$_POST向服务器传递数据,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION 属性所指的URL地址,用户看不到这个过程

GET(URL传参)
$_GET从服务器上获取数据,把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到

_REQUEST可以获取以POST方法和GET方法提交的数据
比较慢

尽量不要使用_GET、_COOKIE、_SERVER等变量中取出需要的值

$_SERVER

$_FILES
$_FILES[‘file’][‘name’]:显示客户端文件的原名称
$_FILES[‘file’][‘type’]:文件的MIME类型,例如:image/gif
$_FILES[‘file’][‘size’]:已上传文件的大小,单位为字节
$_FILES[‘file’][‘tmp_name’]:储存的临时文件名,一般是系统默认
$_FILES[‘file’][‘error’]:该文件上传相关的错误代码

$_SESSION
当前脚本可用SESSION变量的数组
HTTP_SESSION_VARS和$_SESSION是不同的变量,PHP处理它们的方式不同

$_COOKIE
通过HTTP Cookie方式传递给当前脚本的变量的数组
HTTP_COOKIE_VARS和$_COOKIE是不同的变量,PHP处理它们的方式不同

$_ENV
$_ENV包含服务器端环境变量的数组,可在PHP程序的任何地方直接访问
$_ENV只是被动的接收服务器端的环境变量转换为数组元素


举报

相关推荐

0 条评论