visited疑似クラスのビーコンを拾うサービスが登場
2008年10月17日(金曜日)
visited疑似クラスのビーコンを拾うサービスが登場
「行動ターゲティング広告はどこまで許されるのか (it.nikkei.co.jp)」。
行動ターゲティング広告は以前から存在していたが、今年の動向として新しいのは、行動を追跡する手段として、自サイトでの閲覧行動だけでなくよそのサイトでの閲覧行動まで追跡するタイプが現れたことだ。
(~中略~)
仕組みはこうだ。Webページのリンクは標準では青色で表示されるが、訪問済みのリンクは紫色に変わる。このリンクの表示色をJavaScriptなどのプログラムで取得することができれば、閲覧者が特定のサイトに行ったことがあるか否かを調べることができてしまう。
以前、津田ふみかさんがご指摘されていた話ですね。実際に悪用(?)する人が現れたようで……。
仕組みはとても単純で、以下のようにすれば簡単に情報が取得できます。
<style type="text/css> #sita-A a:visited{background:url("/beacon/site-A.gif")} #sita-B a:visited{background:url("/beacon/site-B.gif")} </style> <ul> <li id="sita-A"><a href="http://other-company.example.com"></a></li> <li id="sita-B"><a href="http://rival-company.example.com"></a></li> </ul>
これで /beacon/site-B.gif がアクセスされたら、そのユーザは http://rival-company.example.com にアクセスしたことがあると分かるわけです。
これ、確かに問題はあると思うのですが、実装のミスによるバグというわけではではなく、仕様どおりの動作なのですよね。対策は難しいと思うのですが、どうなのでしょう。軽く考えてみると……。
- 「:link や :visited で画像を指定していても無視する」……これは誰でもすぐに思いつくでしょうけれども、JSで画像以外のスタイルの変化を検出して送信することができますから、対策にならないのです。
- 上記の対応かつ「:visitedのスタイルが適用されている要素にはJSからアクセスできなくする」……というのも、残念ながら対策になりません。たとえば width が変化すれば先祖のコンテナの width に影響が及びますから、そちらを検出して送信できます。
- さらに「JS の getComputedStyle に相当する機能を完全に無効にする」……と、ここまでやれば良いのかもしれませんが、これはいろいろなサイトで残念な事が起きそうな気がします。
- 「外部のドメインへのリンクについては :visited に対応しない」……思い切った対策ですが、場合によってはユーザビリティやアクセシビリティの低下を招きます。外部サイトへのリンクだけが対象なのでそれほど酷いことにはならない? ……これはサイトによるでしょうね。サービスごとにドメインを分けているようなサイトはつらいでしょう。
Bugzillaの「Bug 147777 - :visited support allows queries into global history (bugzilla.mozilla.org)」では 2002年から議論が続いているものの、いまだに決定版と言える対策は打ち出されていないように思えます……。
※2010-04-03追記: Firefoxでは、:visitedでは色だけしか変えられない、といった対策を実施するようです……「次期Firefoxでは:visited疑似クラスのスタイルが制限される」。
- 「visited疑似クラスのビーコンを拾うサービスが登場」へのコメント (3件)
- 前(古い): MT4.22のセキュリティ修正
- 次(新しい): MT管理画面の件がJVNで公開