Firefox 22 / 23 での変更点のうち気になる部分をまとめ

Firefox 22 Aurora がリリース、Firefox 23 Aurora も近くリリースされますが、この 2つのバージョンで適用される変更のうち、気になった 2点に関連する情報をまとめてみます。

Firefoxつい先日ですが、4月 5日に Firefox 22 Aurora (プレベータ版) がリリースされ、続いて、5月 17日には Firefox 23 Aurora がリリースされます (それぞれ正式版は 22 → 2013年 6月 25日 / 23 → 2013年 8月 6日リリース予定です)。

正式版のリリースまではまだ少し時間がありますが、この 2つのバージョンで適用される変更には、すでに話題にもなっていますが、Cookie 関連で 1つ大きな変更と、もう1つ、SSL 関連で Web サイト制作界隈には関係しそうな変更がありましたので、その部分の抜粋と、関連する情報をまとめてみます。

Firefox 22 での変更点

Firefox 22 で反映される変更に関して詳しくは下記にまとまっていますが、

この中で、やはり影響が大きそうなのは、「サードパーティ Cookie のデフォルトブロック」 でしょう。

2013年 5月 18日追記
Firefox 22 でのサードパーティ Cookie のデフォルトブロックは延期されました。

サードパーティ Cookie は初期設定でブロックされます

Bug 818340 - Block cookies from sites I haven't visited

Firefox 22 以降、ユーザがオンラインプライバシーをより柔軟に管理できるよう、Apple Safari のように、サードパーティ Cookie が初期設定でブロックされるようになります。詳しくは Mozilla Privacy Blog の投稿 と Jonathan Mayer の Firefox の新 Cookie ポリシーに関する FAQ をご覧ください。

Firefox 22 サイト互換性情報 : MDN から引用

サードパーティ Cookie のデフォルトブロックとは?

Firefox のプライバシー設定画面

Cookie って何?ですとか、ファーストパーティ Cookie とサードパーティ Cookie についてここでは割愛しますが、ブラウザが処理する Cookie のうち、サードパーティ Cookie に関して、Firefox 22 以降は、「ブロック」 (つまり、サードパーティ Cookie を受け入れない) が初期設定となります。

初期設定でブロックといっても全部拒否じゃない

ここで、サードパーティ Cookie を初期設定でブロックしますと書くと、問答無用ですべてのサードパーティ Cookie をブロックしそうな気がしますが、さすがにそこまで無茶はしてません。

詳しくは、スタンフォード大学セキュリティー研究所の Jonathan Mayer 氏が自身の Blog に掲載している The New Firefox Cookie Policy (Firefox の新しい Cookie ポリシー) に書かれていますので、抜粋してみます。

How does Firefox's new policy compare to the other major browsers?

Chrome - Allows all cookies.

Internet Explorer - Cookie permissions vary by P3P compact policy. In practice, almost all third-party tracking cookies are allowed.

Safari - First-party content has cookie permissions. Third-party content only has cookie permissions if the content already has at least one cookie set.

In short, the new Firefox policy is a slightly relaxed version of the Safari policy.

Firefox の新しいポリシーは、他の主要ブラウザと比べてどうなの?

  • Chrome : すべての Cookie を許可する
  • Internet Explorer : P3P コンパクト・ポリシーによって異なるけど (訳者注: IE には P3P コンパクト・ポリシーを利用した Cookie フィルタリング機能が実装されています)、実際にはほぼすべてのサードパーティ Cookie が許可されてる
  • Safari : ファーストパーティの Cookie がすでにセットされている場合のみ、サードパーティ Cookie を許可する

Firefox の新しいポリシーは、Safari のポリシーとほぼ同じ (ちょっと緩め)になります。

注) 強調は訳者によるもの

I operate a third-party website that uses cookies. What should I do?

If a Firefox user appears to have intentionally interacted with your content, take the same approach as for Safari users. Examples of content within this category include Facebook apps and comment widgets where a user has typed text.

If a user does not seem to have intentionally interacted with your content, or if you're uncertain, you should ask for permission before setting cookies. Most analytics services, advertising networks, and unclicked social widgets would come within this category.

In sum, working around the policy's technical limits may be reasonable in certain cases, but undermining the policy's privacy purpose is never acceptable.

サードパーティ Cookie を使用した Web サイトを運営しているけどどうすればいいの?

現在、Safari ユーザーを対象にやってるのと同じアプローチで対策できますよ。

訳者注) 現在 Safari で、例えば Web サイト内に埋め込んだ iframe から異なるドメインの Cookie をセットしたい場合、サードパーティ Cookie はそのままではセットできないが、一度 iframe 内で Cookie をセットしたいドメインにリダイレクトさせることでファーストパーティ Cookie としてセットしちゃうっていう回避策。ただし、この回避策がずーっと有効かはわからないのであまり積極的に使うのはどうなんだっていうお話も。

What happens to preexisting cookies?

The new policy does not make any special provision for preexisting cookies. Current Firefox users should clear their cookies to fully benefit from the new policy.

既存の Cookie が影響を受けることはあるの?

新しいポリシーで、既存の Cookie が影響を受けることはないです。現在、Firefox を使っているユーザーは、この新しいポリシーの恩恵を受けたい場合、Cookie をクリアする必要があります。

ということで、新しい、Firefox の新ポリシーとしては、サードパーティ Cookie を問答無用で全部遮断するわけではなく、

  • 既に Cookie が保存されているドメインであればサードパーティ Cookie を受け入れる
  • ただし、完全に新規でのサードパーティ Cookie の受け入れはデフォルトでブロック

ということなので、今動いている Web サイトやアプリケーションがサードパーティ Cookie に依存した実装になっていたとして、Firefox 22 にアップデートしたところでいきなりそれが動かなくなることはないということです。ただし、ユーザーが Cookie をリセットしたりすると、終了~ってなる可能性が高い。

まさに 「Cookie リセットするなよ。絶対にリセットするなよ」 って感じ。

通常の Web サイトはそれで大きな影響を受けることはないでしょうが、このポリシーが発表されてから懸念されているように、Cookie を利用してユーザーに適した広告を表示するような仕組みを提供しているところや、Web サイト用の ウィジェット、あるいは Web アプリケーション開発向けの API や SDK などを提供しているところは少し仕組みを変更しないと正常に動作しなくなる可能性があります。

サードパーティ Cookie に依存した仕組みを作るなといってしまえばそれまでですが、そう簡単なお話でもないので、頭が痛い方もいるかもしれませんね。「Firefox なんか無視しよう」 っていう話なら簡単解決かもしれませんが。

問題は、これで動かなくなった場合の対策として、サポート側から 「すべての Cookie を受け入れる設定にしてください」 みたいな周知がされちゃうってことだと思います。Web サイトが正常に動きません → 「セキュリティの設定を下げてください」 とかと同じですが、動かないからといって、セキュリティやプライバシーコントロール的にリスクのある設定を、無知なユーザーにさせるというのはあまりよい手ではありませんからね。

Firefox のポリシー変更も、デフォルトでブロックではなくて、デフォルトは今のまま、トラッキングとかが嫌な人だけ簡単にブロックする設定にできるっていう方がいい気がするけど、よく考えたら、それじゃ今と同じじゃんって話ですね。

でも、「サードパーティ Cookie の全ブロック or 全受け入れ」 っていう二者択一な現在の状態に、「訪れたことがあるサイトのサードパーティクッキーは受け入れる」 みたいな少しゆるめの設定が足されるだけでも喜ぶ人多い気がするけど......

さて、次に行きましょう。

Firefox 23 での変更点

Firefox 23 で反映される変更に関して詳しくは下記にまとまっていますが、

このバージョンでは、SSL ページ上での非 SSL コンテンツが初期設定でブロックされるようになります。

Firefox 18 で、SSL (https) ページ上で非 SSL (http) サイトのコンテンツ読み込みをブロックする設定が追加されました。ユーザのセキュリティを高めるため、これらの設定のうち security.mixed_content.block_active_content が初期設定で有効化されました。つまり、安全なページ上で、安全でないスクリプト、スタイルシート、プラグインコンテンツ、インラインフレーム、Web フォント、WebSockets がブロックされ、代わりに通知バーが表示されるようになります。

Firefox 23 サイト互換性情報 : MDN から引用

ということで、今までは SSL で保護されたページ内に、非 SSL 領域から CSS とか、JavaScript ファイルとか読み込んでしまっても、一応、警告は表示されるものの、ページの表示自体には影響しませんでした。

Firefox 20 で SSL で保護されたページ内に、非 SSL 領域からコンテンツを読み込んだ例

これが、Firefox 23 以降は、デフォルトですべてブロックされますので、iframe が表示されなくなったり、スタイルが読み込まれなくなったり、JavaScript が実行されなくなったりと問題が発生する場合があります。

ま、SSL で保護されたページに、非 SSL 領域から何か読み込んでしまうっていうのは、本来やるべきことではなく、ミスでそうなっている場合が多いので、表示がおかしくなった方が問題に気がつきやすくていいとは思いますけども。

ということで、例えば、jQuery を Google Hosted Libraries から読み込む場合などは、

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

とか、スキームをわざわざ指定したりせずに、Google のサイトで紹介されているとおり、

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

のように記述しておけば、読み込むページのスキームに合わせて処理されますので、楽です。ただし、読み込みたいコンテンツが https で提供されていなければダメですけどね。

同一ドメイン上にあるコンテンツの読み込みでミスることはほぼないと思いますが、外部リソースを読み込んでいるページでミスが起こりがちですので、注意が必要です。

[4月9日 追記]
security.mixed_content.block_display_content の方は false がデフォルトのままらしいですので、画像、音声、動画 といった静的コンテンツは対象外みたいですね。

記事をここまで御覧頂きありがとうございます。
この記事が気に入ったらサポートしてみませんか?