PHP 개발자라면 REGISTER_GLOBALS를 언급하는 것만으로도 전염병에 걸린 것과 같은 본능적인 반응을 불러일으킵니다. 그런데 왜 이 특정 설정에 대해 그토록 강한 혐오감을 느끼는 걸까요?
REGISTER_GLOBALS의 위험
REGISTER_GLOBALS를 사용하면 GET 또는 POST를 통해 전달된 모든 변수가 스크립트 내에서 전역 변수로 액세스할 수 있습니다. . 겉으로는 무해해 보이는 이 기능에는 숨겨진 위협이 숨어 있습니다.
PHP에서 선언되지 않은 변수에 액세스하면 오류가 아닌 경고만 발생합니다. 결과적으로 이는 교활한 취약점의 온상이 될 수 있습니다.
예시
다음 코드 조각을 고려하세요.
<code class="php"><?php // $debug = true; if ($debug) { echo "query: $query\n"; } ?></code>
$ query가 명시적으로 선언되지 않은 경우 위의 코드는 "query"라는 GET 또는 POST 변수의 값을 오류 없이 출력합니다. 즉각적인 위협은 아닐 수 있지만 안타깝게도 잘못 제작된 PHP 코드는 흔히 발생합니다.
이러한 시나리오에서 REGISTER_GLOBALS는 오류로 쉽게 드러날 수 있는 의도하지 않은 부작용과 보안 허점을 초래할 수 있습니다.
결론
REGISTER_GLOBALS는 본질적으로 악의적이지는 않지만 PHP 코드베이스 내에서 보안 및 안정성 문제의 중요한 원인임이 입증되었습니다. 그 결과 악명 높은 평판을 얻었고 개발자들은 만장일치로 이를 버림받은 설정으로 취급하는 데 동의했습니다.
위 내용은 REGISTER_GLOBALS가 PHP에서 보안 악몽으로 간주되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!