開発備忘録 2018/10/23

Web サイトを訪れたユーザーを特定するための方法

見出しの内容について本日相談を受けました。
私は Web にはあまり詳しくはないのですが、色々調べたので今日はそれについて書いていこうと思います。

Cookie

まずは Cookie を利用した方法です。

サイトへのアクセス時にランダムな文字列を生成し、Cookie へセットします。
ユーザーは次回のアクセス時にその Cookie を渡して通信を行うので、その Cookie の値からユーザーを判断するといった方法です。

少し前までは広告からアクセスしてきたユーザーを特定するためにこの方法が使われたりしていましたが、最近はサードパーティ Cookie (違うドメインCookie) を禁止するブラウザが増えてきたので、あまり使われなくなっているみたいです。

ブラウザフィンガープリント (デバイスフィンガープリント)

フィンガープリントを利用した方法です。

そもそもフィンガープリントって……?

フィンガープリントとはコンテンツの内容をハッシュ化したハッシュ値のことで、コンテンツの改ざん、すり替えを防ぐために使われます。
例えば、メールを送信するときに、送信者は本文の内容のハッシュ値を本文に加えて送信します。そして受信者は受け取ったメールの本文をハッシュ化し、それを送られてきたメールにくっついてきたハッシュ値と同値であるかを見ることで第三者に改ざんされていないかをチェックすることができます。

ブラウザフィンガープリントも考え方としてはほぼ同じで、こちらはブラウザから取得できる情報 (ブラウザの名前、OS のバージョン、使用しているプラグインの情報など) を組み合わせてハッシュ化したデータのことを指します。

ブラウザフィンガープリントは情報の組み合わせ方次第ではかなり高い精度でユーザーを区別することができるようです。
ただ OS のバージョンが上がったりするとブラウザフィンガープリントの値も変わってきてしまうので、厳密にユーザーを区別したい場合にはこの方法は向かないと思います。

端末識別子

端末識別子 (MACアドレスや UDID) を使って区別する方法ですが、こちらはオススメしません。

iOS に関しては Apple が公式に端末の UDID や MACアドレスの取得を禁止していますし (API は残っているが無効な文字列を返す・使用するだけでリジェクト対象)、AndroidMACアドレスの取得は現在できないようになっています。

昔はこの方法を取ることもできたという、一応ご紹介です。