PHP教程

PHP安全(二)PHP变量覆盖

本文主要是介绍PHP安全(二)PHP变量覆盖,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

记录笔记之前先说明一下什么叫做变量覆盖漏洞;

变量覆盖漏洞是指自定义的参数替换原有变量值的情况,如$$使用不当,extract函数使用不当,parse_str() 函数使用不当,import_request_variables() 使用不当,开启了全局变量注册等。

 1、全局变量

顾名思义是全局都可以使用的变量,任何的对象或者是函数都可以使用,与之对应的局部变量,只能在定义的类或方法内部使用。

2、$$变量覆盖问题

在PHP中变量是以$符号开头命名的,所以$$可变变量就是以一个变量的值作为一个变量的名。直接说可能不是很好理解,举一个例子来说明。

<?php
$a="qwe";
$qwe=1232;
var_dump($$a);
?>

运行结果int(1232)

3、extract()函数变量覆盖

extract() 函数从数组中把变量导入到当前的符号表中。对于数组中的每个元素,键名用于变量名,键值用于变量值。

<?php
$b = array("a" => "one","b" => "tow");
extract($b);
echo "\$a = $a\n\$b = $b";
?>

运行结果

$a = one
$b = tow

这里补充一下->和=> 的意义和区别

->用来引用对象的成员(属性与方法);=>符号来分隔键和值,左侧表示键,右侧表示值。简单来说就是给别人起一个外号,用外号来代表某个人,提起他的外号,就可以知道他是谁的意思。

4、parse_str函数变量覆盖

parse_str() 函数用于把查询字符串解析到变量中,如果没有array 参数,则由该函数设置的变量将覆盖已存在的同名变量。

5、import_request_variables函数变量覆盖

import_request_variables() 函数将 GET/POST/Cookie 变量导入到全局作用域中。该函数在最新版本的 PHP 中已经不支持。

这篇关于PHP安全(二)PHP变量覆盖的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!