5

Tomcat内でJavaサーブレットアプリケーションを実行していますが、セキュリティ上の理由から、マシン自体(または場合によっては自分のPC)からのみ実行できるようにしたい管理コマンドが1つあります。したがって、これを強制するために、受信したHttpServletRequestのリモートアドレスを確認しますが、リクエストがローカルホストから送信されていない場合でも、常に127.0.0.1を返します。

これはなぜですか、修正できますか、またはサーバーからのみadminコマンドを実行する別の方法がありますか?

4

1 に答える 1

3

最初に、リクエストに「X-Forwarded-For」ヘッダーがあるかどうかを確認します。ヘッダーが設定されている場合、ヘッダーの最初の IP が探している IP になります。ヘッダーが空の場合request.getRemoteAddr()、正しい IP が返されます。

「X-Forwarded-For」のウィキ: http://en.wikipedia.org/wiki/X-Forwarded-For

転送インスタンスは「X-Forwarded-For」ヘッダーの設定を強制されないため、このように正しい IP を取得することを 100% 保証することはできないことに注意してください。

于 2012-09-19T10:42:49.580 に答える