引言
register_globals
是PHP中的一个配置选项,用于控制全局变量的自动注册。
当register_globals
启用时,PHP会将通过GET
、POST
和COOKIE
请求传递的参数自动注册为全局变量,使得这些参数可以直接在脚本中使用,而无需使用超全局数组。
意味着,如果是攻击者传入POST
变量或者地址栏直接输入参数,可以轻易覆盖你的任何默认变量名,就很危险!
范围
在PHP 5.3
之前,register_globals默认开启;
从PHP 5.3
开始,该选项被废弃,并在PHP 5.4
及更高版本中被完全移除
我目前在使用的PHP 5.4.45
和PHP 7.2.9
已经完全没有这个选项了。
方式一:从配置文件关闭配置
register_globals
可以在php.ini文件中设置
其配置范围包括PHP_INI_USER
、PHP_INI_PERDIR
、PHP_INI_SYSTEM
和PHP_INI_ALL
设置register_globals = off
方式二:从代码里检测关闭
if (ini_get('register_globals') == true) die("禁止开启选项");