php变量覆盖,PHP项目安全:防止全局变量覆盖

原标题:PHP项目安全:防止全局变量覆盖

37380445953c3c69fc052c3617d767d9.png

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

图1 PHP全局变量开启

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

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

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

if(authenticated_user) { // 认证用户是否登录

$authorized=true; // authorized变量可以被覆盖

}

如图2所示,设置PHP配置文件中register_globals=Off,程序只能使用$_GET['username']、$_GET['password']或$_REQUEST['username']、$_ REQUEST['password']来接收传递过来的值。

图2 关闭全局变量

在PHP 5.3之前的版本中,register_globals默认为开启状态。为了防止产生安全隐患,在PHP 5.3中将register_globals设置为关闭状态。在新版的PHP 5.6及PHP 7中,官方已经将register_globals选项去除,以防止全局变量的产生。返回搜狐,查看更多

责任编辑:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值