web-dev-qa-db-ja.com

X-Forwarded-ForとX-Forwarded-IPの違いは何ですか?

ASP.NETアプリケーションでクライアントIPアドレスを取得するには、X-Forwarded-Forを使用し、リストから最初のIPアドレスを取得しました(見つかった情報によると、クライアントproxy1、proxy2があります..)。しかし、最近、X-Forwarded-ForのクライアントIPアドレスはプロキシによって変更できるため、X-Forwarded-IPヘッダーからこの情報を取得する方が良いと聞いています。 ?

36
Steve Macculan

X-Forwarded-For は、HTTPプロキシ、ロードバランサーのいずれかから来るwebサーバーに接続するユーザーの発信元IPアドレスを識別する従来の方法です。 。

X-Forwarded-IP は、HTTPメールサービスを介してemailサーバーに接続するユーザーの発信元IPアドレスを識別する従来の方法です。

49
Buhake Sindi

X-Forwarded-Forは、Squidによって最初に導入された非標準ヘッダーです。これはプロキシ固有のヘッダーで、サーバーがプロキシをパススルーした呼び出しの元のリクエスターを識別するのに役立ちます。したがって、明らかにリクエストパス上のプロキシはX-Forwarded-Forを変更する必要があります。リクエストパスにプロキシがない場合、このヘッダーはリクエストに含めないでください。

このヘッダーは非標準であるため、取得する保証はありません。また、処理方法はプロキシの実装によって異なる場合があります。適切なIPが含まれることを保証するものでもありません。

2014年以来、IETFは、ここに文書化されている「Forwarded」と呼ばれるプロキシの標準ヘッダー定義を承認しました https://tools.ietf.org/html/rfc7239 X-Forwardedの代わりに使用するヘッダー。これは、リクエストがプロキシによって処理される場合に発信元IPを取得するために確実に使用する必要があるものです。

一般に、プロキシヘッダー(ForwardedまたはX-Forwarded-For)は、プロキシ経由で確実にクライアントIPを受信した場合にのみクライアントIPonlyを取得する正しい方法です。プロキシヘッダーまたは使用可能な値がない場合は、デフォルトでREMOTE_ADDRサーバー変数を使用する必要があります。

12