$_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!