Maison  >  Article  >  développement back-end  >  $_SERVER[\'HTTP_HOST\'] vs $_SERVER[\'SERVER_NAME\'] : lequel devriez-vous utiliser pour les liens sécurisés ?

$_SERVER[\'HTTP_HOST\'] vs $_SERVER[\'SERVER_NAME\'] : lequel devriez-vous utiliser pour les liens sécurisés ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-24 21:53:35322parcourir

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

Variables du serveur PHP : 'HTTP_HOST' vs. 'SERVER_NAME'

Vous avez rencontré des informations suggérant que l'utilisation de l'un des $_SERVER variables n'est pas sûr, ce qui vous amène à vous interroger sur l'opportunité d'utiliser $_SERVER['HTTP_HOST'] et $_SERVEUR['SERVEUR_NOM']. Clarifions la situation.

Comme vous l'avez compris, $_SERVER['SERVER_NAME'] est déterminé par la configuration du serveur Web, tandis que $_SERVER['HTTP_HOST'] est basé sur la demande du client. Cette distinction soulève la question de savoir quelle variable utiliser pour des définitions de liens fiables à l'échelle du site.

Bien qu'il puisse sembler logique d'utiliser $_SERVER['HTTP_HOST'] pour la compatibilité, l'article de Chris Shiflett "SERVER_NAME Versus HTTP_HOST" révèle une situation plus complexe. Les serveurs Web Apache peuvent être configurés pour utiliser des noms canoniques, garantissant ainsi des noms de serveur cohérents avec SERVER_NAME. Cependant, si cette configuration n'est pas appliquée, s'appuyer uniquement sur HTTP_HOST peut ne pas suffire.

Pour garantir l'intégrité de vos liens, envisagez ces options :

  • Appliquer Canonical Noms : configurez Apache pour utiliser des noms canoniques, en vous assurant que SERVER_NAME fournit toujours le bon serveur name.
  • Valider le nom d'hôte : utilisez une liste blanche pour vérifier que le nom d'hôte fourni dans l'en-tête HTTP_HOST est valide. Exemple :
$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;
}

En évaluant ces options et en tenant compte des problèmes de sécurité soulevés, vous pouvez prendre une décision éclairée quant à l'approche la plus appropriée pour vos scripts PHP.

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!

Déclaration:
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