REGISTER_GLOBALS:PHP 安全隐患
REGISTER_GLOBALS 曾经是 PHP 中一个有争议的功能,引发了广泛的谴责。它臭名昭著的声誉源于它所带来的固有安全风险。
那么,REGISTER_GLOBALS 有什么问题?
REGISTER_GLOBALS 会自动为所有 GET 和 POST 请求参数创建全局变量,使它们可以在脚本中的任何位置访问。这构成了重大威胁,因为访问未声明的变量在 PHP 中只是警告,而不是错误。
考虑以下假设代码:
<code class="php">// $debug = true; if ($debug) { echo "query: $query\n"; }</code>
在未启用 REGISTER_GLOBALS 的情况下,访问未声明的 $query变量会导致警告或错误,提示开发人员显式定义变量。然而,在 REGISTER_GLOBALS 开启的情况下,未声明的 $query 仍然可以作为全局变量使用,从而为攻击者利用此未声明的参数创造了潜在的途径。
虽然本质上并不坏,但 REGISTER_GLOBALS 可能会加剧常见的安全缺陷许多 PHP 脚本由于其质量常常存在缺陷。因此,通常建议禁用 REGISTER_GLOBALS 以增强安全性。
以上是为什么 REGISTER_GLOBALS 是 PHP 中的安全隐患?的详细内容。更多信息请关注PHP中文网其他相关文章!