<code>/* * ------------------------------------------------------ * Security procedures * ------------------------------------------------------ */ if ( ! is_php('5.4')) // 如果php版本大于等于5.4 { ini_set('magic_quotes_runtime', 0); if ((bool) ini_get('register_globals')) { $_protected = array( '_SERVER', '_GET', '_POST', '_FILES', '_REQUEST', '_SESSION', '_ENV', '_COOKIE', 'GLOBALS', 'HTTP_RAW_POST_DATA', 'system_path', 'application_folder', 'view_folder', '_protected', '_registered' ); $_registered = ini_get('variables_order'); foreach (array('E' => '_ENV', 'G' => '_GET', 'P' => '_POST', 'C' => '_COOKIE', 'S' => '_SERVER') as $key => $superglobal) { if (strpos($_registered, $key) === FALSE) { continue; } foreach (array_keys($$superglobal) as $var) { if (isset($GLOBALS[$var]) && ! in_array($var, $_protected, TRUE)) { $GLOBALS[$var] = NULL; } } } } }</code>
이 코드가 무엇을 하는지 잘 모르겠습니다. 그렇게 하면 어떤 이점이 있나요?
마스터님들께 겸허히 조언을 구합니다.
<code>/* * ------------------------------------------------------ * Security procedures * ------------------------------------------------------ */ if ( ! is_php('5.4')) // 如果php版本大于等于5.4 { ini_set('magic_quotes_runtime', 0); if ((bool) ini_get('register_globals')) { $_protected = array( '_SERVER', '_GET', '_POST', '_FILES', '_REQUEST', '_SESSION', '_ENV', '_COOKIE', 'GLOBALS', 'HTTP_RAW_POST_DATA', 'system_path', 'application_folder', 'view_folder', '_protected', '_registered' ); $_registered = ini_get('variables_order'); foreach (array('E' => '_ENV', 'G' => '_GET', 'P' => '_POST', 'C' => '_COOKIE', 'S' => '_SERVER') as $key => $superglobal) { if (strpos($_registered, $key) === FALSE) { continue; } foreach (array_keys($$superglobal) as $var) { if (isset($GLOBALS[$var]) && ! in_array($var, $_protected, TRUE)) { $GLOBALS[$var] = NULL; } } } } }</code>
이 코드가 무엇을 하는지 잘 모르겠습니다. 그렇게 하면 어떤 이점이 있나요?
마스터님들께 겸허히 조언을 구합니다.
PHP 버전이 5.4 이상일 때 Register_globals 상태를 확인하면 배열에 일부 키워드가 있음을 알 수 있습니다. 예를 들어 일반적으로 $_POST를 사용하여 post 메서드에 전달된 매개변수를 가져오는 경우 해당 변수가 주입되면 다른 작업이 되므로 보호해야 합니다.
를 참조하세요.register_globals에 대한 자세한 내용은
http://php.net/manual/zh/security.globals.php