15

ActionControllerソースでは、ローカルリクエストは次のように定義されています。

def local_request? #:doc:
    request.remote_addr == LOCALHOST && request.remote_ip == LOCALHOST
end

私のアプリケーションでは、リクエストが特定のIP範囲からのものである場合、異なるロジックを使用したいと思います。request.remote_addrとの違いは何request.remote_ipですか?どちらを使用すればよいですか?

4

2 に答える 2

16

私はの現在の実装の作成者であり、remote_ipIPスプーフィング攻撃のチェックや、複数のX-Forwarded-Forヘッダーの正しい処理などが含まれます。ただし、大きな注意点があります。複数のヘッダーをサポートしているのは一部のRuby Webサーバーのみであるため、値が間違っている可能性があります。

最も人気のあるRubyアプリサーバーをテストした結果をブログに書きました。これは、繰り返しヘッダーがアプリケーションにとって重要かどうかを確認することをお勧めします。

于 2012-10-17T23:34:00.260 に答える
10

環境変数remote_addrの値をそのまま返す場合のようですが、クライアントがプロキシを介して転送されている場合など、変数の存在と変数に基づいてこれを調整します。REMOTE_ADDRremote_ipHTTP_X_FORWARDED_FORHTTP_CLIENT_IP

この二重チェックlocal_request?は、ユーザーがローカルマシンから来たことを確認する方法であり、ローカルプロキシを介して他の場所から転送されただけではありません。

于 2010-11-02T18:36:06.463 に答える