免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1304 | 回复: 0
打印 上一主题 下一主题

php.ini中register_globals使用详解 [复制链接]

论坛徽章:
2
丑牛
日期:2013-09-29 09:47:222015七夕节徽章
日期:2015-08-21 11:06:17
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-05-29 10:36 |只看该作者 |倒序浏览


.Sli621 { display:none; }
register_globals是php.ini里的一个配置,这个配置影响到php如何接收传递过来的参数比如:GET,POST,Cookie
register_globals可以设置为ON或Off,
简单来说当register_globals=Off的时候,
接收页面程序应该用$_GET['name']和$_GET['pass']或$_COOKIE['name']来接受传递过来的值。
视传值的方法来决定,用GET传值,用$_GET['name'] 来接收值,或用$HTTP_GET_VARS['name']
用POST提交数据的话用就用$_POST['name']来接收数据,或用$HTTP_POST_VARS['name']
当register_globals=On的时候,接收页面程序可以直接使用$user_name和$user_pass的这种类似访问变量的方式得到值。 phperz.com
顾名思义,register_globals的意思就是注册为全局变量,
所以当On的时候,传递过来的值会被直接的注册为全局变量直接使用,
而Off的时候,我们需要到特定的数组里去得到它。
所以,当你碰到无法得到值的时候应该首先检查一下你的register_globals的设置和你获取值的方法是否匹配。
(查看可以用phpinfo()函数或者直接查看php.ini)
PHP 4.2.0 版开始,配置文件中 register_globals 的默认值从 on 改为 off 了,
所以一般出错的原因都是你用的php4.2.0以前版本的编程风格,用$name取值。但你当前所用的php版本高于4.2.0。导致用$name取不到值。
推荐把此项关闭,设置为Off。
那我们为什么要使用Off呢?原因有2:
1、php以后的新版本默认都用Off,虽然你可以设置它为On,但是当你无法控制服务器的时候,你的代码的兼容性就成为一个大问题,所以,你最好从现在就开始用Off的风格开始编程
2,此项要是打开,会存在很多安全隐患。
比如在验证用户时。如果你的代码写的不够严谨,会导致攻击都构造特殊值来饶过验证,
以下为引用的内容: phperz~com
// 当用户合法的时候,赋值 $authorized = true
if (authenticated_user()) {
   
$authorized = true;
}
// 由于并没有事先把 $authorized 初始化为 false,
// 当 register_globals 打开时,可能通过GET auth.php?authorized=1 来定义该变量值
// 所以任何人都可以绕过身份验证
if ($authorized) {
    include
"/highly/sensitive/data.php"; phperz.com
}
?>
参考
http://www.php.net/manual/en/security.registerglobals.php
http://www.phperz.com/html/PHPgaojibiancheng/kaifajiqiao/20080427/042G2A20081265.html
更多安全方面的信息写参考php手册
www~phperz~com


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/4206/showart_715196.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP