メモ

IPアドレス・クッキー・JavaScript・UAなどを使わずユーザーを個別に追跡する方法

by Vernon Swanepoel

ウェブサイトのユーザーがどれぐらいページを見てくれているのか、訪問頻度はどれぐらいなのかといった情報を追跡するのにはクッキー(Cookie)やJavaScriptなどが使用されますが、そうやって追跡されるのがイヤだということでCookieを受け入れないように設定したり、JavaScriptをオフにしているという人もいるはず。しかし、それでもユーザーを個別に追跡する方法があります。

Lucb1e.com :: Cookieless Cookies
http://lucb1e.com/rp/cookielesscookies/



これはオランダ在住でコード・セキュリティ・ネットワークを愛しているというlucb1eさんが明らかにしたもの。手法としては新しいものではなく、多数のサイトで使われているにもかかわらず、そのことを認識している人はほとんどいないというもの。Cookie・JavaScript・IPアドレス・ユーザーエージェント・FLASHやJAVAといったブラウザのプラグインも使わずにユーザー追跡を可能にしているという、この正体は非常に単純でブラウザのキャッシュでした。Cookieを受け入れず、JavaScriptやあらゆるプラグインをオフにして、VPNサービスを使おうとも、これなら追跡が可能というわけです。

Lucb1e.comの上記記事では実際に読んでいる人にタグ付けを行い、ページの訪問回数や最終訪問日時の表示を行っています。ただし、セッションIDはいかなる個人情報とも紐付けしていないので安心して欲しいとのことですが、テキストボックスに入れた文字列が一度ブラウザを閉じて再び開いても残っているのは、わかっていても少々不気味。


使用しているのはHTTPヘッダのETag(エンティティタグ)と呼ばれるもので、コンテンツが持つ固有値のこと。ブラウザでページを読み込んだとき、たとえばキャッシュしている画像のETagとサーバにある画像のETagのチェックサムを比較し、変わっていたら画像は新しいものということなので改めてダウンロードを行い、更新がないときはキャッシュを使用するので転送量が減らせるというわけです。

これがその一例、最初のアクセス時には250KBの画像がダウンロードされてきますが、次にアクセスしたときにはこの画像のETagを持っている状態なので、サーバからは「更新はないよ」という0.1KBのレスポンスが返ってきます。サーバから見てもユーザから見てもトラフィックが減って助かる、というわけ。


仕組みとしては以下のページで解説されていますが、このETagの情報をうまく利用することで、Cookieと同じようなことができている、というのがlucb1eさんの指摘。

事例に学ぶWebシステム開発のワンポイント(12):ブラウザキャッシュでパフォーマンス向上―負荷分散装置の落とし穴に注意- - @IT
http://www.atmarkit.co.jp/ait/articles/0305/10/news002.html

今回、lucb1eさんは独力でデモンストレーション用のコードを作成。オリジナルと同様にJavaScriptなしでも動作するよう作り込んだものの、最終訪問日時表示などに多少バグを残した状態になっているとのこと。ソースコードはGitHubで確認することができますが、このバグはあくまでlucb1eさんのコードにのみ存在するもので、他のサイトで広く使われているものには存在しない点には注意が必要です。

lucb1eさんがわざわざこの記事を書き、デモコードまで作ったのは、ブラウジングするときにみんなにもう少しセキュリティ意識を持って欲しいからだとのこと。キャッシュによるトラッキングが行われていたとしてもこれを検出することは事実上不可能であり、また、キャッシュを使うことで早くページが表示できるなどの利点もあることから、完全にキャッシュをオフにするのは難しいかもしれませんが、最近のブラウザには「プライベートブラウジングモード(シークレットモード)」が搭載されているので、オンラインバンキングなどを使うときにはこれを活用すべきだ、とlucb1eさんは提言しています。

Internet Explorerの「InPrivate」モードはブラウザを開いた状態でCtrl+Shift+Pで使用可能。


Firefoxの「プライベートブラウジング」モード、IEと同じくCtrl+Shift+Pで使用可能。


Chromeの「シークレットモード」。Ctrl+Shift+Nで使用可能

・関連記事
Amazonのクラウド上には暗号化されていない個人情報が転がっている - GIGAZINE

JavaScriptとAJAXでページ上のマウスの動きを録画・再生するデモ - GIGAZINE

IE6・IE7・IE8・IE9にあるXML絡みの情報漏洩の脆弱性は修正予定なし - GIGAZINE

AndroidのブラウザをGoogleのマップとキャッシュでクラッシュさせる手口が登場 - GIGAZINE

in ネットサービス,   メモ, Posted by logc_nt