PHP における $_SERVER['HTTP_HOST'] と $_SERVER['SERVER_NAME'] の比較
PHP スクリプトを使用する場合、これは重要です$_SERVER['HTTP_HOST'] と $_SERVER['SERVER_NAME'] の違いを理解するには、
$_SERVER 変数について
$_SERVER['SERVER_NAME']は Web サーバーの構成によって決定され、VirtualHost、ServerName、UseCanonicalName などのディレクティブの影響を受けます。対照的に、$_SERVER['HTTP_HOST'] はクライアントのリクエストから派生します。
どの変数を使用しますか?
スクリプトの互換性を最大化するには、次のオプションを選択するのが論理的です。 $_SERVER['HTTP_HOST'] の場合。ただし、状況はもう少し複雑です。 Chris Shiflett の記事「SERVER_NAME と HTTP_HOST」では、明確な解決策が存在しないことが強調されています。
潜在的なセキュリティ上の懸念
$_SERVER['HTTP_HOST'] は使用しても無害であるように見えますが、リンクやフォームでは、$_SERVER 変数が攻撃者によって操作される可能性があることを覚えておくことが重要です。このリスクを軽減するには、次のコードに示すように、許可されたホスト名をホワイトリストに登録することが賢明です。
$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; }
これらのガイドラインに従うことで、開発者は安全性を維持しながら、自信を持って PHP スクリプトで $_SERVER 変数を使用できます。環境。
以上がPHP で $_SERVER['HTTP_HOST'] と $_SERVER['SERVER_NAME'] を使用するのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。