Maison > développement back-end > tutoriel php > $_SERVER[\'HTTP_HOST\'] vs $_SERVER[\'SERVER_NAME\'] : quelle est la bonne variable de nom d'hôte pour PHP ?

$_SERVER[\'HTTP_HOST\'] vs $_SERVER[\'SERVER_NAME\'] : quelle est la bonne variable de nom d'hôte pour PHP ?

DDD
Libérer: 2024-12-04 06:13:16
original
366 Les gens l'ont consulté

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

Détermination de la variable de nom d'hôte correcte pour les scripts PHP

Lors de la définition de liens dans vos scripts PHP, il est crucial de choisir la variable appropriée pour le nom d'hôte. . Historiquement, on pensait que $_SERVER['HTTP_HOST'] devait être utilisé car il est basé sur la demande du client, tandis que $_SERVER['SERVER_NAME'] est basé sur le fichier de configuration de votre serveur et peut varier.

Cependant, comme indiqué dans l'article de Chris Shiflett « SERVER_NAME Versus HTTP_HOST », il n'y a pas de réponse définitive. Ce n'est qu'en forçant Apache à utiliser le nom canonique que vous pourrez récupérer systématiquement le nom de serveur correct avec SERVER_NAME.

Dans les situations où cela n'est pas possible, vous pouvez envisager de mettre en œuvre une approche de liste blanche :

$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;
}
Copier après la connexion

Cette méthode consiste à vérifier le nom d'hôte par rapport à une liste prédéfinie de valeurs autorisées. Si le nom d'hôte n'est pas présent dans la liste, une erreur est renvoyée.

Il est important de noter que même si $_SERVER['HTTP_HOST'] peut sembler un choix plus flexible, il peut être vulnérable à la manipulation par acteurs malveillants. Cela peut compromettre la sécurité de votre application.

Par conséquent, la meilleure décision dépend de vos exigences spécifiques et de vos considérations de sécurité. Si vous avez besoin d'un nom de serveur fiable et cohérent, il peut être nécessaire d'appliquer la canonisation des noms d'hôte dans la configuration de votre serveur et d'utiliser $_SERVER['SERVER_NAME']. Alternativement, l'approche de liste blanche avec $_SERVER['HTTP_HOST'] offre une option plus flexible mais potentiellement moins sécurisée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal