在 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中文网其他相关文章!