$_SERVER[\'HTTP_HOST\'] 대 $_SERVER[\'SERVER_NAME\']: 보안 링크에 무엇을 사용해야 합니까?

Barbara Streisand
풀어 주다: 2024-11-24 21:53:35
원래의
320명이 탐색했습니다.

$_SERVER['HTTP_HOST'] vs. $_SERVER['SERVER_NAME']: Which Should You Use for Secure Links?

PHP 서버 변수: 'HTTP_HOST' 대 'SERVER_NAME'

$_SERVER 변수는 안전하지 않으므로 $_SERVER['HTTP_HOST'] 사용의 적절성에 의문을 제기하고 $_SERVER['SERVER_NAME']. 상황을 명확히 해보자.

모아보시다시피 $_SERVER['SERVER_NAME']은 웹 서버의 구성에 따라 결정되는 반면, $_SERVER['HTTP_HOST']는 클라이언트의 요청에 따라 결정됩니다. 이러한 구별은 사이트 전체에서 신뢰할 수 있는 링크 정의에 어떤 변수를 사용해야 하는지에 대한 의문을 제기합니다.

호환성을 위해 $_SERVER['HTTP_HOST']를 사용하는 것이 논리적으로 보일 수도 있지만 Chris Shiflett의 기사 "SERVER_NAME 대 HTTP_HOST"에서는 다음과 같이 설명합니다. 더 복잡한 상황. Apache 웹 서버는 표준 이름을 사용하도록 구성하여 SERVER_NAME과 일관된 서버 이름을 보장할 수 있습니다. 그러나 이 구성이 적용되지 않으면 HTTP_HOST에만 의존하는 것만으로는 충분하지 않을 수 있습니다.

링크의 무결성을 보장하려면 다음 옵션을 고려하세요.

  • Canonical 적용 이름: 표준 이름을 사용하도록 Apache를 구성하여 SERVER_NAME이 항상 올바른 서버를 제공하는지 확인합니다. name.
  • 호스트 이름 유효성 검사: 화이트리스트를 사용하여 HTTP_HOST 헤더에 제공된 호스트 이름이 유효한지 확인합니다. 예:
$allowed_hosts = array('foo.example.com', 'bar.example.com');
if (!isset($_SERVER['HTTP_HOST']) || !in_array($_SERVER['HTTP_HOST'], $allowed_hosts)) {
    header($_SERVER['SERVER_PROTOCOL'].' 400 Bad Request');
    exit;
}
로그인 후 복사

이러한 옵션을 평가하고 제기된 보안 문제를 고려하면 어떤 접근 방식이 PHP 스크립트에 가장 적합한지 현명한 결정을 내릴 수 있습니다.

위 내용은 $_SERVER[\'HTTP_HOST\'] 대 $_SERVER[\'SERVER_NAME\']: 보안 링크에 무엇을 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿