web-dev-qa-db-ja.com

PHPで一意のユーザーフィンガープリントを作成する方法

PHPでユーザーの一意性の「指紋」を生成する最良の方法は何ですか?

例えば:

  1. ユーザーのIPアドレスを「フィンガープリント」として使用できますが、同じIPに他のユーザーが複数存在する可能性があります
  2. ユーザーのIP +ユーザーエージェントを「フィンガープリント」として使用することもできますが、1人のユーザーがSafariからFirefoxにスワップするだけで、再び一意であると見なされます。

理想的には、フィンガープリントはブラウザや「IP」ではなく「マシン」というラベルを付けるのが理想的ですが、これがどのようにして実現可能であるかは考えられません。

ユーザーを一意に識別する方法、およびメソッドの利点/欠点のアイデア/提案を受け入れる。

26
So Over It

このサイトでは、ブラウザを使用して個人を区別するために使用できるほとんどすべての情報をカバーしています。

https://panopticlick.eff.org/

JavaScript、JavaとFlashは非常に役立ちます。

13
JAL

最も簡単で最良の方法:phps session-management を使用-すべてのクライアントにIDが付与されるか、Cookieに保存され(有効な場合)、またはすべてのリンクとフォームでget変数として付与されます。 (または、自分でCookieを設定することもできます)。ただし、これはブラウザの「指紋」のみです。ユーザーがブラウザを変更したり、Cookieを削除したりすると、それを識別することができなくなります。

すべてのクライアントをIPで識別することは通常悪い考えであり、機能しません。同じルーターを使用するクライアントは同じIPを持ちます-プロキシプールを介して接続されたクライアントは、ページの読み込みごとに別のIPを持つことができます。

クライアントが簡単に操作できないソリューションが必要な場合は、クライアントのブラウザーでサポートされているものをすべて使用して次の組み合わせを実行し、各ページ読み込みでそれらを比較してください。

  • 「通常の」HTTP Cookie
  • ローカル共有オブジェクト(Flash Cookie)
  • HTML5 Canvasタグを使用して自動生成され、強制的にキャッシュされたPNGのRGB値にCookieを保存して、ピクセル(Cookie)を読み取る
  • Cookieの保存とWeb履歴の読み取り
  • HTTP ETagへのCookieの保存
  • Internet ExplorerのuserDataストレージ
  • HTML5セッションストレージ
  • HTML5ローカルストレージ
  • HTML5グローバルストレージ
  • SQLiteによるHTML5データベースストレージ

これをすべて実装する evercookie と呼ばれるソリューションがあります

10
oezi

考慮すべきことは他にもあります。ユーザーのパブリックIPアドレスは、ページの読み込みごとに変わる可能性があるものです。
ルーターのパブリックIPを切り替えてトラフィックのバランスをとる組織が複数あります。

3
jmserra

100%の信頼性を実現することは保証されていませんが、いくつかの一般的な方法を組み合わせると、有意義な結果が得られます

  • ユーザーは通常、ブラウザを切り替えません。アルゴリズムを過度に複雑にしてエンジニアリングの完全性を達成することは、努力に値しません。
  • 同じIPからの複数のユーザーを期待できる場合、あなたは確かにトップ100のWebサイトに属しています。それを個人的にとらないでください、しかしあなたはそれほど人気が​​ありません。

機能する可能性のある最も単純なルートを選び、必要に応じて時間をかけて調整します。

2
pestaa

私は3つの異なるコンピューターとさまざまなハンドヘルドデバイスを使用しており、それらの多くには異なるブラウザーがインストールされています。私はこれらすべてを自宅で交換して使用し、他の場所に持っていくので、基本的にはさまざまなIPアドレスを使用します。私が指摘しようとしているのは、その目的のためにブラウザやマシンをフィンガープリントすることは、あなたの目標が人をブロックすることである場合、絶対確実なものになることは決してないということです。

別のアプローチを取ることをお勧めします。禁止されているユーザーのアイデンティティを示唆する入手可能な決定的でない情報に基づいて判断します(一般的でない場合は同じIPまたは同じユーザーエージェント、または使用可能なフォント、使用可能なプラグイン、非標準などのJavaScriptブラウザーのフィンガープリント方法の一部。ウィンドウサイズなど)、そして疑わしい訪問者に、より高い形式の身元確認を要求する-Facebook、Google +、Twitterなどのoauthなど。その後、そのソーシャルメディアを確認してください。アカウントは本物であるか、または回避するために作成されています。ユーザーベースがソーシャルメディアに精通していない場合や、ユーザーが禁止を回避しないことがどれほど重要であるかに応じて、電話検証APIもあります。

0