$_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 중국어 웹사이트의 기타 관련 기사를 참조하세요!