PHP サーバー変数: 'HTTP_HOST' と 'SERVER_NAME'
$_SERVER のいずれかの使用を示唆する情報が見つかりました。変数は安全ではないため、使用の適切性に疑問が生じます。 $_SERVER['HTTP_HOST'] と $_SERVER['SERVER_NAME']。状況を明確にしましょう。
これまでにまとめてきたように、$_SERVER['SERVER_NAME'] は Web サーバーの構成によって決定され、$_SERVER['HTTP_HOST'] はクライアントのリクエストに基づいています。この区別により、サイト全体の信頼できるリンク定義にどの変数を使用するかという問題が生じます。
互換性のために $_SERVER['HTTP_HOST'] を使用するのは論理的であるように思えるかもしれませんが、Chris Shiflett の記事「SERVER_NAME と HTTP_HOST」では次のことが明らかにされています。さらに複雑な状況。 Apache Web サーバーは正規名を使用するように構成でき、サーバー名と SERVER_NAME の一貫性が保証されます。ただし、この構成が強制されない場合は、HTTP_HOST のみに依存するだけでは十分ではない可能性があります。
リンクの整合性を確保するには、次のオプションを検討してください。
$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[\'HTTP_HOST\'] と $_SERVER[\'SERVER_NAME\']: 安全なリンクにはどちらを使用するべきですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。