過去の経緯を無視して利用者のプライバシーも共有するFlashのSharedObject
Webブラウザで利用されるCookieの中にはサードパーティCookieと呼ばれるCookieがあります。
サードパーティCookieとは、例えばhttp://www.example.com/index.htmlというページがあったとして、そのページに貼り付けてある、http://ad.example1.jp/ad.gifの画像に設定されている、あるいは画像のリクエスト時に送信するCookieの事です。要するに、アドレスバーに表示されているドメインとは別のドメインと送受信するCookieです。
サードパーティCookieは、IE6以降の規定の設定ではサービス提供側が適切なポリシーを設定しないと使用できなくなっています*1。これは、かつて大手の広告会社がCookieによってユーザを識別して行動を追跡していた事が問題となり、サードパーティCookieはプライバシーを守る上で制限すべきだという結論に達した結果です(たしか)。他のWebブラウザでも同様な制限がかかっています。
このような歴史があるCookieですが、そのCookieとよく似た技術にFlashのSharedObjectというものがあります。SharedObjectを使うと、Flashムービーからローカルコンピュータ上にデータを保存*2したり、保存してあるデータを読み出したりすることができます。
SharedObjectは、Cookieと同じく他のドメインで設定されたデータを操作する事はできないようになっています。しかし、サードパーティCookieにかけられていた制限と同様な制限はかかっておらず、別ドメインのswfファイルを呼び出した場合でも有効になっています*3。
SharedObjectが使えるようになったのは、調べてみるとFlashMX(Flash Player6)からみたいですがFlashMXの発表は2002年の3月です。IE6のリリースが2001年の8月ですし、高木さんの資料(PDF)によれば2000年頃からサードパーティCookieが問題となっていたそうですので、Macromediaは問題があると認識していながらSharedObjectの機能を追加したという事でしょうか。
2005年の9月に提供が開始されたFlash Player8からはサードパーティのSharedObjectを無効にする設定ができるようになったのですが、規定の設定では有効になっています。しかも、この設定というのが非常にみつけにくい場所にあります*4。ファイルを直接消すとかでなければ、データの削除も基本的にこの設定ページからしかできません。
さらに、これだけではないのです。
SharedObjectのデータはどこに保存されるかというと、WindowsXPの場合は
C:\Documents and Settings\UserName\Application Data\Macromedia\Flash Player\#SharedObjects\Unique?ID\
以下に、Mac OS Xの場合は
/Users/UserName/Library/Preferences/Macromedia/Flash Player/#SharedObjects/Unique?ID/
以下にドメイン別で保存されます。
パスを見ていただくとわかるのですが、Webブラウザに関する文字が一切出てきません。つまり、Internet ExplorerでもFirefoxでもNetscapeでもOperaでもSafariでも関係なく、Flash Playerは同じデータを読みに行くのです。もはやWebブラウザを使い分けての自作自演は許されません。
Cookieは議論され続けた結果、より安全なものになっているという印象です。しかし、そうしている間に97.3%の普及率を誇るFlash Playerはなんだかまずい事になっています。FlashMXのリリースを伝えるプレスリリースには各企業からのコメントが並んでいます。その中にDoubleClickの名前を見つけ、少し、震えたのでした。
次期バージョンのFlash Playerでは、せめて規定でサードパーティのSharedObjectが無効になって欲しいものです。
*1:@ITの記事が詳しいです IE 6のプライバシ管理機能 8.Cookieフィルタリング・レベルの詳細
*2:永続的に!
*3:実験にFlashの評価版(swfの書き出しが可能かは不明)を使おうと思ったのですが、EULAで購入評価以外の目的で使用する事が禁止されていたので、とある方がSharedObjectのサンプルとしてWeb上で提供していたものを使わせていただきました
*4:Flashムービーのコンテキストメニューから設定...
を選び、現れたパネルの中の高度な設定...
ボタンを押し、開いたページの中から[グローバルストレージ設定] パネル
のリンクを探し、リンク先でサードパーティ製Flashコンテンツにコンピュータ上のデータを格納する事を許可します。
のチェックを外します