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