2016-06-30 18 views
4

私はjavaでローカルと外部のIPをキャプチャすることが可能だと知っていますが、私は同時にこれらの2をキャプチャすることができますか、ローカルIPと私のアプリケーションにアクセスしているPCの外部を関連付けることができますか。同じコンピュータからローカルおよび外部IPをキャプチャする方法は?

私は、IPでフィルタリングされる投票フォームを実行しています。ユーザーは一度だけ投票できます。そこで、ローカルネットワーク内の外部IPとローカルの同じコンピュータをキャプチャし、それらを関連付けるという考えが浮かび上がった。

+2

(ユーザーが複数のデバイスを使用することができます場合は特に)、それは変更することができますので、あなたは、ユーザーがすでに投票したかどうか分からないので、IPは、ここで使用しても安全ではありません。安全な方法でこれを達成するには、ログインが必要です。それ以外にも、ローカルネットワーク内のコンピュータの「外部」IPをキャプチャできるかどうかはわかりませんが、外部IP(プロキシ/ルータのIPでもよい)または内部IP(その場合はコール外部IPは関係しません)。 – Thomas

+2

ユーザーを強制的にシステムに認証することは、ユーザーエクスペリエンスには適していません。特にシステムの場合、queはそれを使用するための認証を必要としません。私は、認証なしでこのフィルタを行う別の方法を見つけるでしょう。 –

+1

マックアドレスはどうですか? –

答えて

2

IPアドレスを取得するには、HttpServletRequestオブジェクトのgetRemoteAddrメソッドを使用します。しかし、これは、特にクライアントがプロキシの背後にある場合、クライアントの公開IPだけを提供します。

String ipAddress = request.getRemoteAddr(); 

クライアントのローカルIPは、HTTPリクエストにX-FORWARDED-FORヘッダに使用可能でなければなりません。

request.getHeader("X-FORWARDED-FOR"); 

X-FORWARDED-FOR

+0

私は可能な解決策は、外部/ローカルのIPアドレスとMACアドレスを取得し、これらを関連付けることだと思います。これは、MACアドレスが一意であり、ローカルIPとしての頻度でほとんど変更されないからです。 –

+0

JavaでMACアドレスを見つけることができません。最も良い方法は、ユーザーの電子メールアドレスを使用することです。これは主に固有の価値になります。主に! – aksappy

+0

私は電子メールアドレスでも代替手段と考えていました。 –

関連する問題