PHP에서 Register_globals의 수수께끼 풀기
한때 미스터리에 싸여 있던 PHP 설정인 Register_globals는 스크립트 기능에 큰 영향을 미칩니다. 이 기사에서는 내부 작동 방식을 밝히고 관련 개념을 살펴봅니다.
Register_globals란 무엇입니까?
register_globals 지시문은 $_REQUEST 슈퍼 전역 배열의 내용을 스크립트의 전역 배열에 원활하게 통합합니다. 범위. 결과적으로 입력 필드는 스크립트 내에서 미리 정의된 변수로 우아하게 나타납니다.
예를 들어, 사용자 이름 필드가 포함된 양식 제출은 스크립트에 $username 변수를 부여합니다. 그러나 이러한 편리함에는 대가가 따릅니다. Register_globals는 보안 및 코딩의 악몽을 불러옵니다.
Register_globals의 함정 설명
다음 코드를 고려하세요.
if (user_is_admin($user)) { $authorized = true; } if ($authorized) { // Grant unbridled power! }
register_globals를 활성화하면 악의적인 사용자가 URL 취약점을 악용할 수 있습니다. 단순히 스크립트의 URL에 "?authorized=1"을 추가하면 불법 액세스 권한이 부여됩니다.
Register_globals와 전역 키워드 구별
register_globals와 달리 전역 키워드는 작동합니다. 뚜렷하게. 이는 로컬 범위 내에서 다른 곳에서 선언된 특정 변수에 액세스할 수 있도록 허용합니다.
예:
$foo = 'bar'; baz(); function baz() { echo $foo; // Triggers an error: undefined variable } buzz(); function buzz() { global $foo; // Grants access to $foo within this scope echo $foo; // Outputs "bar" }
결론
register_globals는 개발을 가속화할 수 있습니다. , 보안에 미치는 영향은 인식된 이점보다 훨씬 큽니다. 강력하고 안전한 PHP 애플리케이션을 보장하려면 해당 기능을 이해하고 올바른 코딩 방법을 수용하는 것이 가장 중요합니다. 반대로, global 키워드는 지정된 범위 내에서 전역 변수 조작에 대한 대상화되고 제어된 접근 방식을 제공합니다.
위 내용은 Register_globals는 PHP 보안에서 친구인가요, 적인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!