Web技術

X-Forwarded-***は古いのか

あるCTFの問題の解法で、X-Forwarded-Hostを使うものがありました。
いろいろ調べていると、X-Forwarded-Forの派生ヘッダのようでした。

改めてXFFに関するMDNのドキュメントを読むと、以下の記述がありました。

「X-Forwarded-For (XFF) ヘッダーは、 HTTP プロキシーサーバーを通過してウェブサーバーへ接続したクライアントの、送信元 IP アドレスを特定するために事実上の標準となっているヘッダーです。」

確かに、接頭辞に「X-」を持つヘッダは非標準のヘッダを示すときに使われるものなので、RFCに定義されているものではないはずです。

調べていくと、RFCとして正しいのは、「Fowarded」ヘッダを使うことのようです。

Forwarded: by=<identifier>;for=<identifier>;host=<host>;proto=<http|https>

https://developer.mozilla.org/ja/docs/Web/HTTP/Reference/Headers/Forwarded

複数のミドルボックスを経由する場合には、[ , ]で値が入るようです。

先述の通り、RFCとして正しいのはForwardedヘッダですが、現場では一切耳にしたことがありません。

まとめ

RFCではForwarded、実運用ではX-Forwarded-***となる認識でいいようです。
ヘッダ名は違っても、ヘッダ偽装対策は必要というのは変わらなそうです。
技術者によっては、XFFで処理してくれるのかと質問されることがあるかもしれないので、覚えておこうと思います。