动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机 | DVBOX
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
  
   PHP → 阅读文章

 关于register_globals设置的问题

作者来源: 
阅读 1252 人次 , 2006-3-29 4:16:00 


基于各种各样的理由,php 的设置需要依赖于 register_globals
参数打开,但是也成为安全的重要隐患,请看下面的一段代码:

<?php
if (authenticate_user()) {
$authenticated = true;
}
...
?>

远程用户可以简单的传递 'authenticated' 作为表单变量,即使
authenticate_user() 函数返回 false,$authenticated 还是会设置成 true。这是一个简单的例子,你或许会说,我的程序不会这样来写。
而实际上,在稍微复杂一些的应用里面,这个机制就会成为重大的漏洞。

因此,新版本的 php ,我们建议用户不要采用这个变量来控制应用,虽然我们没有打算要在不久的将来删除。

为了帮助用户建立 register_globals 设置为 off 的应用,增加了一些变量来代替旧的,下面是7 个新的数组:

$_get - 包含了通过 get 发送的表单变量
$_post - 包含了通过 post 发送的表单变量
$_cookie - 包含了 http cookie 变量
$_server - 包含服务器端变量 (例如:remote_addr)
$_env - 包含环境变量
$_request - get 变量,post 变量和 cookie 变量的混合,通过用户而来而不能信任的变量。
$_session - 包含通过会话模块注册的 http 变量

这些变量,在任何范围内,都自动设置为全局变量,可以在任何地方调用,而不需要加 global 关键字。
例如:

function example1()
{
print $_get["name"]; // 没有必要写成:'global $_get;'
}

另外一个值得一提的小窍门是在 $_session 数组中增加一个记录能自动作为会话变量注册,就像你调用了
session_register() 函数。

 
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:应用NuSoap构建新型的基于PHP的Web服务
· 下一篇:关于下载doc,xls文件的办法(java source)
· 开头显示X-Powered-By: PHP/4.0.0
· NIS 函数库
· 最好的邮件编码解码类
· 身份证方面的函数
· 关于Zend Optimizer


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077