-2

偽のまたは操作されたhttpヘッダーを作成することによってIPアドレスがスプーフィングされる可能性があり、したがってPHP / ASPページで着信要求を検証する際にIPアドレスに依存すべきではない場合、サーバーはどうしてそれを取得して依存するのでしょうか。たとえば、IPを拒否または許可することはすべてIPに基づいています。

サーバーは、PHP / ASPがサーバー変数を介してIP情報を取得するのとは別の(そしてより信頼性の高い)方法でIP情報を取得しますか?

4

2 に答える 2

4

TCP セッションの設定にはスリーウェイ ハンドシェイクが必要なため、サーバーは通常、リスクの低いトラフィックの接続の IP アドレスに依存します。このハンドシェイクは、パケット内の IP アドレスがルーティング可能で、接続を処理する準備ができているマシンがある場合にのみ成功します。不正なルーターは IP アドレスを偽造する可能性がありますが、一般に、ルーターがいずれかのエンドポイントから離れているほど、接続を偽造するのが難しくなるため、ほとんどの人は低リスクの用途でルーターに依存する準備ができています. (たとえば、DNS スプーフィングは、接続エンドポイントを偽装する可能性がはるかに高い方法です。)

リスクの高いユーザーは、 TLSIPsec、またはCIPSO (まれ) のようなものを使用して接続エンドポイントを検証するか、下位層にユーザー認証を構築して特定の接続 ( OpenSSH ) を認証する必要があります。

しかし、TCP セッションの実際の内容は、ありとあらゆるものである可能性があります。また、サーバーは、IP アドレスやその他の重要なものを忠実に報告するために、TCP セッションの内容 (HTTP ヘッダーなど) に依存するべきではありません。

于 2012-01-31T02:08:07.407 に答える
2

IP アドレスはスプーフィングできません。サーバーが応答を送信するには、アドレスが必要です。

PHP は、サーバーから $_SERVER グローバルの IP アドレスを取得します (変数名はそのためです!)。これにより、プロトコル スタックの下位からアドレスが決定されます。

編集:

sarnold は、原則として、ルーティング テーブルを破壊してトラフィックを誤った方向に誘導する可能性があることを適切に指摘しています。(確かに、数年前にアジアの Tier 1 ルーターでこのような事件があったと思います。)したがって、「IP アドレスはなりすましできない」という私のコメントは、サーバー変数が常に宛先 IP を忠実に反映します。サーバーの境界を越えて何が起こるかは、まったく別の問題です。

于 2012-01-31T02:05:08.230 に答える