33

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

例えば:

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

理想的には、フィンガープリントはブラウザや「IP」ではなく「マシン」にラベルを付けますが、これがどのように達成できるかはわかりません。

ユーザーを一意に識別する方法、およびその方法の利点/欠点についてのアイデア/提案を歓迎します。

4

4 に答える 4

10

最も簡単で最良の方法: phpsセッション管理を使用します。すべてのクライアントに ID が与えられ、Cookie に保存されるか (有効な場合)、すべてのリンクとフォームで get-variable として与えられます (または、独自に Cookie を設定することもできます)。しかし、これはブラウザを「フィンガープリント」するだけです。ユーザーがブラウザを変更したり、Cookie を削除したりした場合、それを特定することはできなくなります。

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

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

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

これらすべてを実装するevercookieというソリューションがあります。

于 2010-11-03T08:39:53.557 に答える
5

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

于 2011-12-12T16:27:45.217 に答える
3

100% の信頼性を達成することは保証されていませんが、いくつかの一般的な方法を組み合わせることで意味のある結果を得ることができます

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

必要に応じて、機能し、時間の経過とともに調整できる最も単純なルートを選択します。

于 2010-11-03T08:39:58.230 に答える