>백엔드 개발 >PHP 튜토리얼 >PHP 보안에서 $_SERVER 변수는 얼마나 안정적입니까?

PHP 보안에서 $_SERVER 변수는 얼마나 안정적입니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-12 16:03:02858검색

How Reliable Are $_SERVER Variables in PHP Security?

$_SERVER 변수의 보안 평가

HTTP 요청 헤더에는 사용자가 제어할 수 있는 정보가 포함되는 경우가 많습니다. 결과적으로 많은 $_SERVER 변수가 악의적인 입력에 의해 오염되어 공격의 소스가 될 수 있습니다.

제어된 값 이해

'SERVER_ADDR'과 같은 서버 제어 변수 및 'SERVER_SOFTWARE'는 서버 구성에 의해 설정되며 본질적으로 안전합니다.

부분적으로 서버 제어 변수는 요청에 따라 달라지며 유효한 값이 제한되어 있어 신뢰할 수 있습니다. 예에는 'REMOTE_ADDR' 및 'REQUEST_TIME'이 포함됩니다.

임의의 사용자 제어 값

반면, 임의의 사용자 제어 값에는 클라이언트가 보낸 모든 입력이 포함될 수 있습니다. 잠재적으로 악의적인 콘텐츠도 포함됩니다. 'HTTP_USER_AGENT' 및 'PHP_SELF'와 같은 변수가 이 범주에 속합니다.

신뢰성 평가

$_SERVER 변수의 신뢰성 결정은 특정 용도 및 서버 구성에 따라 다릅니다. . 예를 들면 다음과 같습니다.

  • 'REMOTE_ADDR'은 일반적으로 신뢰할 수 있지만 DNS 공격에서 스푸핑될 수 있습니다.
  • 'HTTP_HOST'는 서버가 잘못된 호스트 헤더가 있는 요청을 거부하는 경우 안전한 것으로 간주될 수 있습니다.
  • 'REQUEST_METHOD'는 서버가 허용을 제한하는 경우 신뢰할 수 있습니다.

$_SERVER 변수 분류

  • 서버 제어됨:

    • 'GATEWAY_INTERFACE'

    • 'SERVER_SOFTWARE'


    • 'SERVER_ADMIN'

    • 'S ERVER_SIGNATURE'


  • 일부 서버 제어됨:

    • 'HTTPS'

    • 'REQUEST_TIME'

    • ' 원격 _ADDR'

    • 'REMOTE_HOST'

    • 'REMOTE_PORT'

    • 'SERVER_PROTO COL'


    • 'HTTP_HOST'

    • 'SERVER_NAME'

    • 'SCRIPT_FILENAME '

    • 'SERVER_PORT'

    • 'SCRIPT_NAME'


  • 완전히 임의의 사용자 제어 값:

    • 'argv', 'argc'

    • < li>'REQUEST_METHOD'
    • 'QUERY_STRING'

    • 'HTTP_ACCEPT'

    • 'HTTP_ACCEPT_CHARSET'


    • 'HTTP_ACCEPT_ENCODING'

    • 'HTTP_ACCEPT_LANGUAGE'

    • 'HTTP_CONNECTION'

    • 'HTTP_REFERER'

    • 'HTTP_USER_AGENT'

    • 'AUTH_TYPE'

    • < li>'PHP_AUTH_DIGEST'
    • 'PHP_AUTH_USER'

    • 'PHP_AUTH_PW'

    • 'PATH_INFO'

  • 'ORIG_PATH_INFO'

  • 'REQUEST_URI'

  • 'PHP_SELF'

  • 'PATH_TRANSLATED'

  • 다른 'HTTP_' 값



$_SERVER 변수를 신뢰하기 전에 상황과 잠재적인 결과를 고려하세요.

위 내용은 PHP 보안에서 $_SERVER 변수는 얼마나 안정적입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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