Internet Explorer MVP による IE Test Drive 技術解説 : プライバシー保護機能の強化

※ Do Not Track プロパティに関する文言を修正しました (2013年2月7日)。

Internet Explorer ブログ (日本語版) では、これから数回にわたり Internet Explorer Test Drive に掲載されているサンプルについて、Internet Explorer の MVP の方々からご寄稿いただいた技術解説をお送りします。

第4回目は、Internet Explorer 10で利用できるHTML5を中心とした新機能について、その利用方法を理解しやすいサンプルコードを用いて詳説した書籍「IE10で実際に動作可能な機能と利用方法に特化して解説するInternet Explorer10 & HTML5 Webアプリケーション開発ブック」を執筆された村地 彰さんによるプライバシー保護機能の強化の解説です。

 

プライバシー保護機能の強化

本記事では IE TestDrive で紹介されている Internet Explorer の機能から、

で紹介されている Internet Explorer のプライバシー保護機能について解説します。

ブラウザーを利用して Web ブラウジングをしていろいろなサイトを巡回し、さまざまな情報に接することは、現在のインターネット ユーザーにとっては当たり前のことでしょう。その一方で、同じブラウザーを使って Web アプリケーションを利用したり、SNS を利用したりすることもごく一般的なことです。

こうした状況で多くのユーザーが潜在的に不安を感じていることの一つは、ブラウザーを使って利用したり訪問したりした Web サイト・Web アプリケーションでのアクティビティ (クリックや書き込みなどの行動、訪問履歴) が別のドメインの Web サイト・Web アプリケーションから確認でき、そこでの広告表示やレコメンドに利用される可能性でしょう。ドメインの境界を越えてユーザーのアクティビティが収集され利用されること、つまり Web 上の行動が追跡されることをプライバシー上の重要な問題と考える人も少なくありません。

こうしたアクティビティの追跡にはサードパーティーの Cookie が利用されることが多いのですが、それ以外にも Flash の Cookie (Local Shared Object) や Web ビーコン、隠し iframe、外部スクリプトなど、多くの手法が使われ、ユーザーが閲覧している URL やユーザーの IP アドレスなどの情報を、ユーザーの知らないうちに、またはユーザーの同意なしに収集しています。そのためユーザーが何かの機能を無効にして追跡を避けようとしても、正常な Web ブラウジングに支障が出ないような範囲でそれを行うのは非常に難しくなっています。

追跡防止リスト

そのような問題への対処として、Internet Explorer には 2 つの追跡防止機能が搭載されています。その 1 つは、オンラインで入手できるリストやユーザーが構成したリスト (追跡防止リスト、TPL) に基づいてサードパーティーからの追跡用コンテンツをブロックする「追跡防止 (Tracking Protection)」機能です。この機能は Internet Explorer 9 で採用され、Internet Explorer 10 にも引き継がれています。

この機能はクライアント (ブラウザー) で完結する機能であるため、追跡用コンテンツのプロバイダーや、追跡用コンテンツを埋め込んでいる Web サイト側の対応が必要なく、ユーザーの意思だけで任意の追跡用コンテンツを無効にできるという特徴を持っています。プライバシーに敏感で Web 上での行動追跡を嫌うユーザーにとっては好都合の機能でしょう。

追跡防止の機能については IE TestDrive の Tracking Protection Lists ページでも解説されていますが、追跡防止リストはブロックするドメインや URL のパターンを記述した単純なテキストファイルで、ユーザーがリストを有効にするとそのリスト内容に合致するドメインや URL からの追跡用コンテンツをブロックできます。Tracking Protection Lists ページの図にもあるように、ユーザーがアクセスしたページ自体のコンテンツや、行動追跡を目的としない広告、Web ガジェット、ブログ パーツはブロックされません。追跡防止リストの仕様は W3C で標準化が進められています。現在 Internet Explorer で利用可能な追跡防止リストの記述方法は、MSDN のページに記載されています。

追跡防止リストの例

追跡防止リストは、以下の手順で入手して有効にすることができます。

  1. デスクトップの Internet Explorer でツール ボタン  をクリックし、[セーフティ] - [追跡防止] の順で選択します
  2.  [アドオンの管理] が開きます。[追跡防止リストをオンラインで取得] をクリックします
  3. 「Internet Explorer ギャラリー」の「追跡防止リスト」のページが開きます
  4. 追加したいリストを選んで、[追加] ボタンをクリックします
  5. 次のような確認画面が表示されますので、[リストを追加する] をクリックします
  6. 取得した追跡防止リストが追加され、有効になります

追跡防止リストは「Internet Explorer ギャラリー」以外の場所で公開することもできます。企業内の管理者は独自のリストを作成し、社内に公開することもできます。追跡防止リストをクライアントから取得できるようにするには、以下の Javascript コードを利用します。

javascript:window.external.msAddTrackingProtectionList(URL, bstrFilterName)

msAddTrackingProtectionList の第1引数 URL はリストの URL、第2引数 bstrFilterName はリストの表示名です。詳しくは MSDN のページを参照してください。なおリストは HTTP (HTTPS) プロトコルで提供される必要がありますが、固有の MIME Type は必要なく、text/plain を返せば問題ありません。またセキュリティ上の理由から、msAddTrackingProtectionList の呼び出しにはボタン、リンク、フォームなどのユーザー操作が必要です。ページの load イベントなどのようなユーザー操作を介さない呼び出しでは機能しません。msAddTrackingProtectionList メソッドは Internet Explorer 9 および 10 で利用できます。

さらにInternet Explorer 9 および 10 では msTrackingProtectionEnabled メソッドを利用して Web ページで追跡防止リストが有効になっているかどうかを確認することもできます。以下の Javascript コードでは、追跡防止リストが有効である場合に tpEnabled 変数に論理値 TRUE が代入されます (無効の場合は論理値 FALSE が代入されます)。

var tpEnabled = window.external.msTrackingProtectionEnabled();

個人用リストを構成する

追跡防止リストはユーザーが自分で構成することもできます。上記の 1. の手順で [アドオンの管理] を開き、[個人用リスト] をクリックしてからダイアログ下部の [このリストの設定] にある [設定] をクリックします。すると以下のような設定画面が表示されます。

個人用追跡防止リストの設定画面

この画面には、ユーザーが訪問したサイトで検知された追跡用コンテンツのリストが表示されています。[この数の訪問済みサイトで使われているプロバイダー コンテンツを表示します] で指定した数以上の複数のサイトで検知された追跡用コンテンツが表示されます。この画面で行える設定は以下の通りです。

  • [自動的にブロックする] を設定した場合、このリストに表示された追跡用コンテンツは自動的にブロックされます。設定後に指定数以上の複数のサイトで検知されたコンテンツも自動的にブロックされます。[ブロックまたは許可するコンテンツを選択する] を設定して一部のコンテンツを [許可] に選択した後で [自動的にブロックする] に設定を変更した場合、[許可] の設定は引き継がれ、それ以外のコンテンツが (設定後に検知されたコンテンツを含めて) ブロックされます。
  • [ブロックまたは許可するコンテンツを選択する] を設定した場合は、リストの項目を選択して [許可] または [ブロック] をクリックすることで各コンテンツに対する動作を選択できます。動作を選択していないコンテンツは、「未決定(許可済み)」として扱われます。設定後に指定数以上の複数のサイトで検知されたコンテンツも「未決定(許可済み)」として扱われます。

このリストの検知は自動的に行われますが、検知済みのリストを削除することは可能です。削除は以下の手順で行います。

 

  1. デスクトップの Internet Explorer でツール ボタン  をクリックし、[セーフティ] ? [閲覧履歴の削除] の順で選択します
  2. [ActiveX フィルターと追跡防止のデータ] にチェックを入れて、[削除] をクリックします (その他の項目には必要に応じてチェックを入れてください)
  3. 削除の完了は通知バーに表示されます。

追跡防止機能によってページ内のコンテンツがブロックされている場合、アドレス バーに  が表示されます。

ブロックにより必要なコンテンツが表示されない場合は、 をクリックすると以下のメッセージが表示されます。

[追跡防止を無効にする] をクリックすると、表示しているページのドメインでは追跡防止機能が無効になります。

Do Not Track

Internet Explorer 10 に搭載されているもう 1 つの追跡防止機能は、Do Not Track です。Do Not Track はアメリカ連邦取引委員会 (FTC) が提唱したオンラインでの行動追跡防止メカニズムで、クライアントから明示的に行動追跡のオプトアウトが行えるようにするものです。具体的には、クライアントはサーバーへのリクエストで DNT という HTTP ヘッダーを送信します。

DNT : 1

DNT ヘッダーの値が 1 の場合、行動追跡からオプトアウトしている事を示しています。つまりクライアント (ユーザー) は行動追跡を拒否することをサーバーに伝えています。このヘッダーを含むリクエストを受け取ったサーバーは、そのリクエストに対して行動追跡を行わないことが求められます。つまり行動追跡機能を含むサードパーティーのコンテンツがページに含まれないようにするか、そのようなコンテンツが含まれる場合は実際の追跡を行わないようにする必要があります。

IE TestDrive の Do Not Track Test Page にも書かれているように、Do Not Track は Internet Explorer 9 から搭載されている機能です。ただし Internet Explorer 9 では追跡防止リストによる追跡防止を有効にすると自動的に Do Not Track も有効になり、すべてのサイトに対して DNT : 1 ヘッダーを送信する動作になっていました。これに対してInternet Explorer 10 では追跡防止リストを有効にしなくとも、 Do Not Track だけを有効にできるようになりました。

Internet Explorer 10 では、Do Not Track は [インターネット オプション] の [詳細設定] タブで設定できます。

[インターネット オプション] - [詳細設定] タブ

[常に Do Not Track ヘッダーを送信する] が有効の場合は、追跡防止リストの有効・無効にかかわらず常にすべてのサイトへのリクエストで DNT : 1 ヘッダーを送信します。Internet Explorer 10 ではインストール後の初回起動時にユーザー設定を確認する画面が表示されますが、その際の既定値では [常に Do Not Track ヘッダーを送信する] が有効です。

注:Internet Explorer 10でも追跡防止リストを有効にすると、Internet Explorer 9 と同様にすべてのサイトに常に DNT : 1 ヘッダーを送信します。

実際に DNT : 1 ヘッダーが送信されている事は、F12 開発者ツールの [ネットワーク] タブでキャプチャして確認できます。

F12 開発者ツールでHTTP ヘッダーをキャプチャする

Do Not Track はクライアントの DNT ヘッダーの送信によるオプトアウトに対してサーバーが適切な処理を行わないと、追跡防止の役割は機能しません。しかしながら、クライアントのオプトアウトに対してサーバーがどのように振る舞うことが望ましいのか現在も議論が続けられており、送信された DNT ヘッダーに対応した挙動をするサーバーはまだ少数派です。そのため現時点では Do Not Track だけでユーザーが希望するような追跡防止は実現できません。

とはいえ、2012年6月に Opera がバージョン12で、11月にGoogle Chrome がバージョン23で安定版でも Do Not Track をサポートした事により、PC 向けの主要ブラウザーのすべてで Do Not Track がサポートされました。これによって、より多くのユーザーがさまざまなブラウザーを通してサーバーに DNT ヘッダーを送信することになるでしょう。今後はこうしたユーザーの要求をサーバーの運営者、さらには追跡コンテンツを配信している事業者も無視できなくなると考えられます。

注:本原稿執筆時点では Do Not Track Test Page には Chrome の Do Not Track サポートについて " Not Supported" と表示されますが、実際には上記のようにバージョン23以降でサポートされています。

Do Not Track が有効になっているかどうかは、Do Not Track Test Page にも書かれているように navigator.doNotTrack プロパティを取得することで Web ページからも検知できます。ただしこのプロパティについては、本稿執筆時点で以下のような制限があります。

  • Internet Explorer 9 および 10 では、ベンダー プレフィックスを付けて navigator.msDoNotTrack プロパティとして取得する必要があります。
  • W3C に投稿されている仕様案では document.navigator.doNotTrack として取得できると書かれていますが、筆者が確認したところ現在 Do Not Track をサポートしているブラウザーでは window.navigator.doNotTrack または navigator.doNotTrack として取得する必要がありました。
  • このプロパティは読み取り専用です。スクリプトから Do Not Track の設定を変更することはできません。
  • 筆者が確認したところ Do Not Track が有効の場合に navigator.doNotTrack プロパティで取得できる値は、Internet Explorer (msDoNotTrack)、Google Chrome、Opera では "1" でしたが、Mozilla Firefox では "yes" でした。W3C に投稿されている仕様案では "1" が取得できることになっています。

上記のような理由で、ページで Do Not Track が有効かどうかチェックするには、以下のように記述する必要があります。

navigator.doNotTrack == "1" || navigator.msDoNotTrack == "1" || navigator.DoNotTrack == "yes";

このようにまだまだ発展途上にある Do Not Track ですが、サーバー側が適切な振る舞いを行うようになれば、Web サイトでのユーザー エクスペリエンスを低下させる事なくユーザーが好まない行動追跡を避けることができるようになる可能性を持っています。今後は Web サイトや Web アプリケーションの開発者にとっても、行動追跡をオプトアウトするユーザーに、どのようなエクスペリエンスを提供するのか、十分に検討する必要があるでしょう。