X-Forwarded-For 【XFF】
概要
X-Forwarded-For(XFF)とは、HTTPヘッダのフィールド(項目)の一つで、プロキシやロードバランサがWebサーバに対して本当のクライアントのIPアドレスを通知するためのもの。正式な規格には含まれないが事実上の標準として普及している。負荷分散や異なるネットワーク間の接続のためにプロキシサーバやロードバランサなどの中継機器を利用すると、Webサーバ側から見たHTTPリクエストの送信元アドレスはそれら中継機器のものとなり、実際に要求を発信したWebクライアントのIPアドレスを直接知ることができない。
このような場合、中継機器がリクエストを転送する際にX-Forwarded-Forフィールドをヘッダに追加し、その値としてクライアントのアドレスを記載しておくことで、サーバ側にクライアントのアドレスを知らせることができる。
X-Forwarded-Forフィールドの書式は「X-Forwarded-For: クライアントIPアドレス,プロキシ1,プロキシ2…」という形式で、必須なのはクライアントのIPアドレスのみである。通信経路上で何段階も中継が繰り返された場合に、途中にあるプロキシ等のアドレスをカンマに続けて列挙する。
注意点
Webサーバにとって外部ネットワークからX-Forwarded-For付きのリクエストを受信した場合、その内容が信用できるとは限らないため注意が必要である。通常、サーバがX-Forwarded-Forを必要とするのは自ネットワーク内で手前にリバースプロキシやロードバランサが存在する場合が多いため、そのような構成でなければ単に無視すれば良い。
一方、クライアント側ネットワークでフォワードプロキシ等の中継機器を運用する場合、X-Forwarded-Forによって外部に自ネットワークの内部情報を不必要に知らせてしまう場合がある。設定によってオフにしたり、他のネットワーク機器の機能でフィールドを削除する等の対応が必要になる。
(2021.2.3更新)