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