防止全局变量覆盖—Hack之路

防止全局变量覆盖

在PHP全局变量功能开启的情况下,传递过来的数据会被直接注册为全局变量使用,如图2-6所示。在关闭的情况下,PHP会把接收到的数据存放在规定好的全局数组中
如:
register_globals = On

这段配置表明register_globals设置为全局变量开启。接下来用下面的一段代码提交一个用户登录表单,其中包括用户名和密码

<form name=”login” action=”LoginUrl” method=”POST”>

<input type= “text” name=”username ” >

<input type = “password” name = “password” >

<input type=”submit” value=”login”>

</ form>

当register_globals = On时,程序可以直接使用$username和$password来的接受值,同时用户也可以定义其他全局变量。

例如,register_globals配置选项打开之后,可导致下面代码中的$authorized变量被覆盖,无需认证用户名和密码就可以直接设置authorized的值为ture,跳过认证进入登录状态,这会造成很大的安全隐患

<?php
if (authenticated_user()) { //认证用户是否登录
$authorized = ture;   //authorized变量可以被覆盖
}

在PHP5.3之前的版本中,register_globals默认为开启状态。为防止产生安全隐患在PHP5.3中将register_globals设置为关闭状态。在新版的PHP5.6及PHP7中,官方已经将register_globals选项去除,以防止全局变量的产生

 

网站地址:https://www.hackzl.cn;发布者:hack之路,转转请注明出处:https://www.hackzl.cn/index.php/2020/09/09/%e9%98%b2%e6%ad%a2%e5%85%a8%e5%b1%80%e5%8f%98%e9%87%8f%e8%a6%86%e7%9b%96-hack%e4%b9%8b%e8%b7%af/

发表评论

邮箱地址不会被公开。 必填项已用*标注