ハードウェア情報を収集して、Java サーブレットに要求を行う特定のデバイス (カテゴリではない) を一意に識別する方法はありますか? これを検索しましたが、方法があるとは思いません(「ユーザーエージェント」ヘッダーは一部の情報に使用できますが、それは特定のデバイスセットを識別するだけで十分ではありません)。
1 に答える
この情報は、HTTP 要求のどこにもありません。リモート アドレス (クライアント IP) とユーザー エージェント (ブラウザーが偽装する文字列) は、HTTP 要求に基づいて抽出できる最も近い一意の識別子です。それでも、この情報は信頼できません。たとえば、クライアントは匿名プロキシを使用できます。たとえば、クライアントがブラウザのユーザー エージェント文字列を変更した可能性があります。
基本的には、クライアント側でこの情報を収集し、それをサーバー側にリクエスト パラメータとして自分で送信する必要があります。ただし、この情報を収集するために利用できる方法は限られています。たとえば JavaScript では、セキュリティ上の理由からこれが許可されていません。あなたの最も近い賭けは、署名された (!) JavaアプレットまたはWeb Startアプリケーションです。これにより、クライアントが Java コードをダウンロードしてローカルで実行できるようになります。しかし、これも常に信頼できるとは限りません。クライアントは、たとえば、アプレット/Webstart コードをハッキングしたり、アプレットとサーバー間の HTTP トラフィックを改ざんしたりできます。
別の方法は、クライアントが有効なログインによって一意の識別子自体を提供する必要がある登録/承認/認証システムを導入することです。これは単純であるだけでなく、より堅牢です。