ホームページ > バックエンド開発 > PHPチュートリアル > PHP で $_SERVER[\'HTTP_HOST\'] と $_SERVER[\'SERVER_NAME\'] を使用するのはどのような場合ですか?

PHP で $_SERVER[\'HTTP_HOST\'] と $_SERVER[\'SERVER_NAME\'] を使用するのはどのような場合ですか?

Barbara Streisand
リリース: 2024-11-16 10:52:03
オリジナル
416 人が閲覧しました

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

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート