>백엔드 개발 >PHP 튜토리얼 >Register_globals에 대해 자세히 알아보기

Register_globals에 대해 자세히 알아보기

黄舟
黄舟원래의
2016-12-17 09:32:131596검색

register_globals에 대한 심층적인 이해

register_globals는 dedecms에서 강제로 제한됩니다.

register_globals 설정은 PHP 변수 액세스 범위를 제어하므로 활성화하면 불필요한 보안 문제가 발생합니다. 이므로 여기서는 강제 종료됩니다. 웹마스터 공간이 지원하지 않는 경우에는 대부분의 웹마스터가 참고할 수 있도록 다음 방법으로 수정하시면 됩니다.

* 독립형 서버인 경우 사용자의 경우 php 구성 파일에서 php.ini를 수정하세요. Register_globals=On을 Register_globals=Off로 변경한 후 Apache를 다시 시작하세요.

* 가상 호스트 사용자인 경우 최대한 공간 공급자에게 알리세요. 구성을 수정하도록 허용하거나 ini_set('register_globals',0 )을 시도할 수 있습니다.

* 웹 사이트 디렉토리에 새 .htaccess 파일을 만들고 php_flag를 추가하세요. htaccess 파일의 마지막 줄에 새 줄을 추가하면 됩니다.

*작동하지 않는 경우 유일한 최후의 수단은 include/common.inc.php로 직접 이동하여 다음 코드를 삭제하는 것입니다. 권장하지 않음).

//register_globals 속성을 켤 때 안전하지 않은 가능성이 많으므로 Register_globalsif(ini_get('register_globals')){ 종료('php.ini Register_globals must is Off!'); } PHP4.2.0 버전부터 Register_globals 설정 옵션의 기본값은 php.ini가 꺼집니다. 그러니 지금 Off의 스타일로 프로그래밍을 시작하는 것이 가장 좋습니다!
register_globals의 값은 On 또는 Off로 설정할 수 있습니다. 각각의 차이점을 설명하는 코드를 제공하겠습니다.

코드:

. 코드는 다음과 같습니다.









register_globals=Off인 경우 프로그램 수신 시 $_GET['user_name'] 및 $_GET['user_pass']를 사용하여 전달된 값을 수락해야 합니다. (참고:

의 method 속성이 post인 경우 $_POST['user_name'] 및 $_POST['user_pass']를 사용해야 합니다.)

register_globals=On일 경우 다음 프로그램에서 사용할 수 있습니다. $user_name 및 $user_pass를 직접 사용하여 값을 허용합니다.

register_globals는 이름 그대로 전역변수로 등록한다는 뜻이므로 On일 경우 전달된 값을 전역변수로 직접 등록하여 직접 사용하고, Off일 경우에는 전역변수로 등록해야 합니다. 특정 배열로 이동하여 가져옵니다. 따라서 위와 같이 값을 얻을 수 없는 문제를 겪는 친구는 먼저 Register_globals 설정이 값을 얻는 방법과 일치하는지 확인해야 합니다. (확인하려면 phpinfo() 함수를 사용하거나 php.ini를 직접 확인하면 됩니다.) 무엇이 문제인지 살펴볼까요?

입력한 사용자 이름과 비밀번호가 올바른 경우 웹페이지에 대한 액세스를 인증하는 데 사용되는 다음 PHP 스크립트를 살펴보세요.

코드는 다음과 같습니다.


// 사용자 이름과 비밀번호 확인
if ($username == 'kevin' and $password == 'secret')
$authorized = true
?>