web-dev-qa-db-ja.com

HttpServletからクライアントのMACアドレスを取得する方法

IP、MACアドレスなどのクライアントの詳細を収集するサーブレットを作成するように依頼されました。

彼のIPを取得するのは非常に簡単です(request.getRemoteAddr())が、彼のMACアドレスを取得するための洗練された方法が見つかりません。

TCP=パケットとすべてを取得するため、WebサーバーがMacアドレスなどのデータにアクセスできることは合理的であるように思われます。このデータはどこかに登録されますか?アクセス可能ですか?

(私はTomcat6の上で作業しています)

25
Amir Arad

あなたはおそらくあなたが望むものを手に入れるつもりはないでしょう。 (クライアントのMACアドレス)

サーバーが十分に近い場合(ハブまたはスイッチ経由で直接接続されている場合)、MACアドレスに [〜#〜] arp [〜#〜] を使用できます。これをインターネット上のIPに対して行う場合、おそらく最も近いルーターまたはスイッチの内部インターフェースを取得することになります。

TCP/IPが機能する方法のため、「フレーム」で使用されるMACアドレスは、サーバーとホストの間で情報が取得する各ホップで、それぞれがリッピングされて再構成されます。

alt text

カプセル化

42
atom255

TCP/IP ... MACアドレスを取得できません。低すぎる層です。

8
ivmos

これはHttpServletクラスでは不可能です。

ユーザーのMACアドレスを取得する可能性があると考えることができる唯一の方法は、クライアント側でJavascriptを使用してそれを取得し、サーバーが読み取れるCookieに配置することです。しかし、Javascriptを使用してMACアドレスを取得することが可能かどうかはわかりません。ブラウザのサンドボックスの外に出ているため、ブラウザがこれを許可するのはセキュリティリスクのように思われますが、ハッキングが行われている可能性があります。

1
Steve Claridge

クライアントはこれがJVMで発生することを許可する必要があると思います:

これを見てください thread

0
AndreiM