SC Workbook
科目 A-2 · セキュリティ

X-Forwarded-For の信頼

AP サーバはリバースプロキシ RP(192.0.2.10)からの接続だけを受け付ける。RP は 1 台で,受信した接続の送信元 IP アドレスを X-Forwarded-For ヘッダの末尾に追加する。AP サーバは,X-Forwarded-For の先頭の値が 203.0.113.0/24 の場合だけ管理画面を表示する。AP サーバに次のログが記録されていた場合の記述として,適切なものはどれか。

remote=192.0.2.10 method=GET path=/admin/ status=200 xff="203.0.113.50, 198.51.100.77"
  1. アX-Forwarded-For の先頭は元のクライアントのアドレスであり,198.51.100.77 は経由したプロキシのアドレスなので,203.0.113.50 からの正当な接続と判断できる。
  2. イRP が追加したのは末尾の 198.51.100.77 で,これが RP に接続した送信元である。203.0.113.50 は接続元が付けた値の可能性があるので,信頼する RP が追加した値で判定すべきである。
  3. ウX-Forwarded-For は詐称され得るので,AP サーバが受け付けた接続の送信元アドレス(remote の値)で判定するように変更すれば,接続元を正しく判別できる。
  4. エX-Forwarded-For の値を全て検査し,いずれか一つが 203.0.113.0/24 に含まれれば表示するように変更すれば,詐称による不正な表示を防げる。
正解と解説を見る

正解 イ

この問題の基礎知識

  • X-Forwarded-For は,プロキシが受信した接続の送信元 IP アドレスを末尾に追加していくヘッダであり,正しく運用されていれば「クライアント, プロキシ 1, プロキシ 2」の順に並ぶ。
  • HTTP のヘッダはクライアントが任意に設定できるので,プロキシに届いた時点で X-Forwarded-For に偽の値が含まれていることがある。プロキシは既存の値の末尾に追加するので,先頭側の値は信頼できない。
  • サーバが TCP の接続で直接見る送信元アドレスは直前の接続元であり,リバースプロキシを経由する構成ではプロキシのアドレスになる。
  • アクセス制御に X-Forwarded-For を使う場合は,信頼するプロキシが追加した値だけを使い,末尾から信頼するプロキシの台数に応じて数えた位置の値を採用する。
アX-Forwarded-For の先頭は元のクライアントのアドレスであり,198.51.100.77 は経由したプロキシのアドレスなので,203.0.113.50 からの正当な接続と判断できる。

先頭の値が元のクライアントだと言えるのは,経路上の全てのクライアントとプロキシが正しく振る舞う場合だけである。先頭の値は接続元が自由に設定できるので,正当と判断する根拠にならない。

イRP が追加したのは末尾の 198.51.100.77 で,これが RP に接続した送信元である。203.0.113.50 は接続元が付けた値の可能性があるので,信頼する RP が追加した値で判定すべきである。正解

信頼できるのは信頼するプロキシが追加した部分だけであり,RP が 1 台なら末尾の値を使う。先頭の値で判定すると,接続元がヘッダを付けるだけでアクセス制御を回避できる。

ウX-Forwarded-For は詐称され得るので,AP サーバが受け付けた接続の送信元アドレス(remote の値)で判定するように変更すれば,接続元を正しく判別できる。

AP サーバは RP からの接続だけを受け付けるので,remote の値は常に RP の 192.0.2.10 になる。この値では元のクライアントを区別できず,全ての接続を同じ送信元として扱うことになる。

エX-Forwarded-For の値を全て検査し,いずれか一つが 203.0.113.0/24 に含まれれば表示するように変更すれば,詐称による不正な表示を防げる。

接続元が付けた値もリストに含まれるので,いずれか一つが一致すれば許可する方式では,203.0.113.0/24 のアドレスを付けるだけで許可されてしまう。詐称の対策にならない。

検証用の出典出典照合済み
MDN Web Docs: X-Forwarded-For header / RFC 7239 Forwarded HTTP Extension
照合の根拠(5 件)
問題 ID A2-SEC-0623 · AI 作成のオリジナル問題 · 正解と各選択肢の根拠を出典の原文で確認しています。 照合日 2026-11-08

非公式の学習用アプリです(IPA とは関係ありません)。問題はすべて AI が作成したオリジナルで、誤りを含む場合があります。