PHP スクリプトの正しいホスト名変数の決定
PHP スクリプトでリンクを定義する場合、ホスト名に適切な変数を選択することが重要です。歴史的には、$_SERVER['HTTP_HOST'] はクライアントのリクエストに基づいており、$_SERVER['SERVER_NAME'] はサーバーの構成ファイルに基づいており、変更される可能性があるため、使用する必要があると考えられていました。
ただし、Chris Shiflett の記事「SERVER_NAME と HTTP_HOST」に記載されているように、明確な答えはありません。 Apache に正規名の使用を強制することによってのみ、SERVER_NAME を使用して正しいサーバー名を一貫して取得できます。
これが不可能な状況では、ホワイト リスト アプローチの実装を検討できます。
$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; }
この方法には、ホスト名を事前定義された許可値のリストと照合することが含まれます。ホスト名がリストに存在しない場合は、エラーが返されます。
$_SERVER['HTTP_HOST'] はより柔軟な選択肢のように見えるかもしれませんが、次のような操作に対して脆弱である可能性があることに注意することが重要です。悪意のある俳優。これにより、アプリケーションのセキュリティが危険にさらされる可能性があります。
したがって、最適な決定は、特定の要件とセキュリティに関する考慮事項によって異なります。信頼性と一貫性のあるサーバー名が必要な場合は、サーバー構成でホスト名の正規化を強制し、$_SERVER['SERVER_NAME'] を使用することが必要になる場合があります。あるいは、$_SERVER['HTTP_HOST'] を使用したホワイト リスト アプローチは、より柔軟ですが安全性が低くなる可能性のあるオプションを提供します。
以上が$_SERVER[\'HTTP_HOST\'] と $_SERVER[\'SERVER_NAME\']: PHP に適切なホスト名変数はどれですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。