>백엔드 개발 >PHP 튜토리얼 >$_SERVER[\'HTTP_HOST\'] 대 $_SERVER[\'SERVER_NAME\']: PHP에 적합한 호스트 이름 변수는 무엇입니까?

$_SERVER[\'HTTP_HOST\'] 대 $_SERVER[\'SERVER_NAME\']: PHP에 적합한 호스트 이름 변수는 무엇입니까?

DDD
DDD원래의
2024-12-04 06:13:16397검색

$_SERVER['HTTP_HOST'] vs. $_SERVER['SERVER_NAME']: Which is the Right Hostname Variable for PHP?

PHP 스크립트에 대한 올바른 호스트 이름 변수 결정

PHP 스크립트에서 링크를 정의할 때 호스트 이름에 적합한 변수를 선택하는 것이 중요합니다. . 역사적으로 $_SERVER['HTTP_HOST']는 클라이언트의 요청을 기반으로 하기 때문에 사용해야 하는 반면, $_SERVER['SERVER_NAME']은 서버의 구성 파일을 기반으로 하며 달라질 수 있다고 믿어졌습니다.

그러나 Chris Shiflett의 기사 "SERVER_NAME과 HTTP_HOST 비교"에 언급된 것처럼 명확한 답은 없습니다. Apache가 표준 이름을 사용하도록 강제해야만 SERVER_NAME을 사용하여 올바른 서버 이름을 일관되게 검색할 수 있습니다.

이것이 불가능한 상황에서는 화이트리스트 접근 방식 구현을 고려할 수 있습니다.

$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;
}

이 방법에는 미리 정의된 허용 값 목록과 비교하여 호스트 이름을 확인하는 작업이 포함됩니다. 호스트 이름이 목록에 없으면 오류가 반환됩니다.

$_SERVER['HTTP_HOST']가 더 유연한 선택처럼 보일 수 있지만 다음과 같은 조작에 취약할 수 있다는 점에 유의하는 것이 중요합니다. 악의적인 배우. 이로 인해 애플리케이션의 보안이 손상될 수 있습니다.

따라서 최선의 결정은 특정 요구 사항과 보안 고려 사항에 따라 달라집니다. 안정적이고 일관된 서버 이름이 필요한 경우 서버 구성에서 호스트 이름의 정규화를 시행하고 $_SERVER['SERVER_NAME']를 사용해야 할 수 있습니다. 또는 $_SERVER['HTTP_HOST']를 사용한 화이트리스트 접근 방식은 더 유연하지만 잠재적으로 덜 안전한 옵션을 제공합니다.

위 내용은 $_SERVER[\'HTTP_HOST\'] 대 $_SERVER[\'SERVER_NAME\']: PHP에 적합한 호스트 이름 변수는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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