Maison  >  Article  >  développement back-end  >  Quand devriez-vous utiliser $_SERVER[\'HTTP_HOST\'] contre $_SERVER[\'SERVER_NAME\'] en PHP ?

Quand devriez-vous utiliser $_SERVER[\'HTTP_HOST\'] contre $_SERVER[\'SERVER_NAME\'] en PHP ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-16 10:52:03335parcourir

When Should You Use $_SERVER['HTTP_HOST'] vs. $_SERVER['SERVER_NAME'] in PHP?

$_SERVER['HTTP_HOST'] vs. $_SERVER['SERVER_NAME'] en PHP

Lorsque vous travaillez avec des scripts PHP, il est crucial pour comprendre les différences entre $_SERVER['HTTP_HOST'] et $_SERVER['SERVER_NAME'].

Comprendre les variables $_SERVER

$_SERVER['SERVER_NAME'] est déterminé par la configuration de votre serveur Web, influencé par des directives telles que VirtualHost, ServerName et UseCanonicalName. En revanche, $_SERVER['HTTP_HOST'] est dérivé de la requête du client.

Quelle variable utiliser ?

Pour maximiser la compatibilité des scripts, il semble logique d'opter pour pour $_SERVER['HTTP_HOST']. Toutefois, la situation est légèrement plus complexe. L'article de Chris Shiflett, "SERVER_NAME Versus HTTP_HOST", souligne qu'il n'existe aucune solution claire.

Problèmes de sécurité potentiels

Alors que $_SERVER['HTTP_HOST'] semble inoffensif à utiliser dans les liens et les formulaires, il est important de se rappeler que les variables $_SERVER peuvent être manipulées par des attaquants. Pour atténuer ce risque, il est prudent de mettre sur liste blanche les noms d'hôtes autorisés, comme démontré dans le code suivant :

$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 adhérant à ces directives, les développeurs peuvent utiliser en toute confiance les variables $_SERVER dans leurs scripts PHP tout en maintenant un environnement sécurisé. environnement.

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