首页 > 后端开发 > php教程 > 为什么 PHP 中的 register_globals 被禁用?

为什么 PHP 中的 register_globals 被禁用?

Linda Hamilton
发布: 2024-11-15 10:33:02
原创
687 人浏览过

Why Was register_globals Disabled in PHP?

在 PHP 中注册全局变量

简介

在 PHP 中,register_globals 是一个内部设置,可以自动注册 $_REQUEST 超全局数组中的变量。但是,出于安全考虑,它默认被禁用。

注册全局变量的示例

启用 register_globals 后,来自 POST 或 GET 请求的输入字段值可以直接作为具有相同变量的变量进行访问名称作为输入字段。例如:

<form method="post">
  <input type="text" name="username">
  <input type="submit">
</form>
登录后复制

启用 register_globals 后,以下 PHP 代码将在脚本开头评估为 true:

$username === $_POST['username'];
登录后复制

安全漏洞

引入了 Register_globals严重的安全漏洞。例如,攻击者可以将查询字符串参数附加到 URL,例如“?authorized=1”,以绕过授权检查。

全局关键字

与 register_globals 不同,global 关键字具有不同的目的。它用于从函数内的不同范围访问变量。例如:

$foo = 'bar';

function baz() {
  // Attempting to use $foo here will trigger a warning
  echo $foo;
}

function buzz() {
  global $foo;  // Declares that $foo is a global variable
  echo $foo;    // Prints 'bar'
}
登录后复制

结论

虽然由于存在安全风险,register_globals 已不再使用,但 global 关键字仍然是访问不同范围内的变量的有用工具。

以上是为什么 PHP 中的 register_globals 被禁用?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板