register_globals
是一個(gè) PHP 配置選項(xiàng),用于控制哪些變量可以通過(guò) $_GET
、$_POST
和 $_COOKIE
全局?jǐn)?shù)組訪問(wèn)。這個(gè)選項(xiàng)在 PHP 5.4.0 版本中被默認(rèn)禁用,而在 PHP 5.0.0 版本中啟用。
在不同 PHP 版本中的表現(xiàn)如下:
PHP 5.0.0 - 5.3.0:在這個(gè)版本中,register_globals
是默認(rèn)啟用的。這意味著所有通過(guò) $_GET
、$_POST
和 $_COOKIE
傳遞的變量都會(huì)被自動(dòng)注冊(cè)為全局變量。這可能會(huì)導(dǎo)致安全隱患,因?yàn)楣粽呖梢酝ㄟ^(guò)構(gòu)造特定的請(qǐng)求來(lái)訪問(wèn)和修改敏感數(shù)據(jù)。
PHP 5.4.0 - 5.4.45:在這個(gè)版本中,register_globals
默認(rèn)是禁用的,但可以通過(guò) safe_mode
配置選項(xiàng)啟用。如果你在這個(gè)版本中啟用了 safe_mode
和 register_globals
,那么通過(guò) $_GET
、$_POST
和 $_COOKIE
傳遞的變量仍然會(huì)被自動(dòng)注冊(cè)為全局變量。但是,如果你禁用了 safe_mode
,那么 register_globals
將不起作用。
PHP 5.4.46 - 5.6.0:在這個(gè)版本中,register_globals
仍然是默認(rèn)禁用的。如果你在這個(gè)版本中啟用了 safe_mode
,那么 register_globals
將不起作用。從 PHP 5.6.0 開始,safe_mode
已經(jīng)被廢棄,不再影響 register_globals
的行為。
PHP 7.0.0 及更高版本:在這個(gè)版本中,register_globals
始終被禁用。這意味著通過(guò) $_GET
、$_POST
和 $_COOKIE
傳遞的變量不會(huì)自動(dòng)注冊(cè)為全局變量。這有助于提高安全性,因?yàn)楣粽邿o(wú)法通過(guò)構(gòu)造特定的請(qǐng)求來(lái)訪問(wèn)和修改敏感數(shù)據(jù)。
總之,register_globals
在不同 PHP 版本中的表現(xiàn)主要取決于 PHP 版本本身。在 PHP 7.0.0 及更高版本中,建議始終禁用 register_globals
以提高安全性。在較早的版本中,如果你關(guān)心安全性,可以考慮禁用 safe_mode
和 register_globals
。