>  기사  >  백엔드 개발  >  PHP에서 Register_globals가 비활성화된 이유는 무엇입니까?

PHP에서 Register_globals가 비활성화된 이유는 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-15 10:33:02632검색

Why Was register_globals Disabled in PHP?

PHP에서 전역 변수 등록

소개

PHP에서 Register_globals는 $_REQUEST 슈퍼 전역 배열에서 변수를 자동으로 등록하는 내부 설정이었습니다. 그러나 보안 문제로 인해 기본적으로 비활성화되어 있습니다.

Register Globals의 예

register_globals가 활성화되면 POST 또는 GET 요청의 입력 필드 값을 동일한 변수로 직접 액세스할 수 있었습니다. 이름을 입력 필드로 지정합니다. 예:

<form method="post">
  <input type="text" name="username">
  <input type="submit">
</form>

register_globals가 활성화된 경우 다음 PHP 코드는 스크립트 시작 부분에서 true로 평가됩니다.

$username === $_POST['username'];

Security Vulneraries

Register_globals가 도입되었습니다. 심각한 보안 취약점. 예를 들어 공격자는 인증 확인을 우회하기 위해 "?authorized=1"과 같은 쿼리 문자열 매개 변수를 URL에 추가할 수 있습니다.

글로벌 키워드

register_globals와 달리 글로벌 키워드에는 다른 목적. 함수 내에서 다른 범위의 변수에 액세스하는 데 사용됩니다. 예를 들면 다음과 같습니다.

$foo = 'bar';

function baz() {
  // Attempting to use $foo here will trigger a warning
  echo $foo;
}

function buzz() {
  global $foo;  // Declares that $foo is a global variable
  echo $foo;    // Prints 'bar'
}

결론

register_globals는 보안 위험으로 인해 더 이상 사용되지 않지만, global 키워드는 여전히 다양한 범위의 변수에 액세스하는 데 유용한 도구입니다.

위 내용은 PHP에서 Register_globals가 비활성화된 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.