不気味なクッキーなし

クッキーは新鮮なのが一番です。古くなったクッキーなしで不気味な季節を満喫するための最新のレシピはあるでしょうか?

クッキーは新鮮なのが一番です。古くなったクッキーなしで不気味な季節を満喫するための最新のレシピはあるでしょうか。

Google は、ウェブ プラットフォーム全体でサードパーティ Cookie を段階的に廃止する取り組みを進めています。これはクロスサイト トラッキングに取り組むうえで大きな節目となるものですが、かなり長い道のりを歩んでいます。では、これまでの道のりと 今後の予定を見てみましょう

表面的には、Cookie はブラウザとサーバー間で送信されるシンプルな Key-Value ストアとして機能します。これにより、設定(theme=bats)を保存したり、ログインしているユーザーのセッション ID を保存したりするなど、サイトで便利な機能を提供できます。

単純な値(たとえば、Theme=bats、fav_pumpkins=us-nyc など)を保持するサードパーティ Cookie

その Cookie が、その Cookie を設定したサイトと同じサイトで使用されている場合、Google ではその Cookie をファーストパーティ Cookie と呼びます。サードパーティ Cookie とは、Cookie を設定したサイトとは別のサイトの一部として使用されているものです。たとえば、theme=bats の Cookie は、同じサイトにアクセスした場合はファーストパーティ Cookie になりますが、別のサイトの一部として iframe などのクロスサイト リソースに含まれている場合は、サードパーティ Cookie になります。

サードパーティ Cookie の問題は、クロスサイト トラッキングが可能になることです。共有サービスは、テーマなどを設定する代わりに、識別子全体をそのテーマに保存する場合があります。共有サービス Cookie が含まれるさまざまなサイト間を移動すると、この同じ識別子が送信されます。つまり、1 つのサービスが、それらのサイト間でユーザーのアクティビティを監視してリンクできることを意味します。

一意の ID が設定されたサードパーティ Cookie です。これにより、サードパーティ サイトがウェブ上でユーザーをトラッキングできるようになります。

ファーストパーティの Cookie(デフォルト)

ここでの旅はすでに進歩しています。以前は、プレーンな Cookie を設定するだけで、theme=pumpkins が同一サイトまたはクロスサイトのすべてのコンテキストで送信されていました。大多数のサイトでは、同じサイトのコンテキストでのみ Cookie が送信されることを望んでいます。これは Cookie の SameSite 属性で制御できます。次に例を示します。

Set-Cookie: theme=bats; SameSite=Lax

これにより、リソースがトップレベル サイトと一致する場合にのみ Cookie を送信するようにブラウザに指示します。つまり、サイトでファーストパーティ Cookie が必要なタイミングを指定する必要がありました。これはセキュリティの観点から少し後戻りです。デフォルトでは、権限を取得するだけでなく、権限を増やす必要があるときに確認する必要があります。

そのため、SameSite=Lax がデフォルトです。theme=bats を設定すると、同一サイト コンテキストでのみ送信されます。

SameSite=Lax のデフォルトの値を指定すると、サードパーティのコンテキストでの Cookie の送信が停止されます。

クロスサイト Cookie またはサードパーティ Cookie が必要な場合(たとえば、テーマを埋め込みウィジェットに表示する場合)は、次の項目を指定する必要があります。

Set-Cookie: theme=bats; SameSite=None; Secure
明示的な SameSite=None 値を指定すると、クロスサイト コンテキストで Cookie が送信されるようにマーク付けされる

これにより、クロスサイト コンテキストで Cookie を送信する必要があることをブラウザに伝えますが、Google ではセキュアな接続のみに制限する必要があります。

より美味しいファーストパーティ クッキー

デフォルトの方が若干改善されていますが、レシピに改善の余地はまだあります。簡単な例を見てみましょう。

Set-Cookie:  __Host-theme=bats;
  Secure;
  Path=/;
  HttpOnly;
  Max-Age=7776000;
  SameSite=Lax;

これにより、1 つのドメインのみに制限されたファーストパーティ Cookie、安全な接続、JavaScript によるアクセスなし、古くなる前に自動的に期限切れになる、同一サイトのコンテキストでのみ許可されるファーストパーティ Cookie が得られます。

CHIPS を使うとクッキーがおいしくなります!

ウェブの優れた点の 1 つは、複数のサイトをまとめて構成できることです。他のサイトでおすすめのパンプキン パッチ ツアーやトリックオアトリートのルートを表示できる地図ウィジェットを作成するとします。このサービスでは、Cookie を使用して、ユーザーがルート上の進捗状況を保存できるようにしています。問題は、トリックオアトリートのサイトと同じサードパーティ Cookie がパンプキン パッチのサイトに送信されることです。サイト間でユーザーをトラッキングしたくありませんが、ブラウザでは Cookie が 1 つしか使用されていません。その使用を分ける方法がありません。

SameSite=None を指定した場合でも、クロスサイト Cookie はすべて共有 Cookie jar に保存される

そこで登場するのが Cookie の独立分割状態(CHIPS)提案です。1 つの共有 Cookie 瓶ではなく、トップレベル サイトごとに別個のパーティション分割された Cookie 瓶があります。サイトでは Cookie の Partitioned 属性を使用して、この機能をオプトインします。

Set-Cookie: __Host-route=123;
  SameSite=None;
  Secure;
  Path=/;
  Partitioned;
Cookie の Partitioned 属性により、トップレベル サイトごとに個別の Cookie JAR が作成される

そのクッキー瓶を共有する代わりに、各自が用意したクッキーを受け取ります。よりシンプルかつ安全で 衛生的な機能となっています

Chrome 109 で Cookie の独立分割状態(CHIPS)に関する出荷の意向を送信いたしました。この通知は 12 月にベータ版でのテストが可能になり、2023 年 1 月に Stable で使用できるようになります。サイトのクッキーの作り方を改善するための新年の抱負を抱いている方は、ぜひチェックして、クロスサイト Cookie に CHIPS を散りばめてみてください。

ファーストパーティ セットを使用して Cookie をパーティーに招待する

また、デベロッパーの皆様から寄せられた多くのフィードバックから、自社が管理しているサイト間でサービスを共有し、それらをまたいだ Cookie の使用は許可したいが、サードパーティによる真のコンテキストでは送信できないケースがあることも明確に説明されています。たとえば、pretty-pumpkins.compretty-pumpkins.co.uk があるとします。Cookie ベースのシングル サインオン システムを横断して運用しているとします。両方のサイトにログインする必要があるため、CHIPS は機能しません。要件は、これらの関連サイト間で同じ Cookie を使用することです。

Google では、これを可能にするためファースト パーティ セット プロポーザルに取り組んでいます。 Google は 1 回のオリジン トライアルと数多くのコミュニティ ディスカッションを経て、次のことを目的とした最新バージョンに至りました。

  • 互いに同じ関係者であるべきサイトのグループを定義する手段を組織が提供します。
  • Storage Access API を利用して、ファーストパーティ セット内のクロスサイト Cookie へのアクセスをリクエストします。
ファーストパーティ セットでは、関連サイト間でのみ Cookie の jar を共有可能

これらのクッキーはまだオーブンで焼かれていますが、テストすべきことが他にある場合は、ファーストパーティ セットのデベロッパー ガイドで確認できます。ディスカッションに参加したい場合は、WICG/ファーストパーティ セットの提案に飛び込むこともできます。

Cookie が古くならないようにするには

Google は、2024 年半ばから Chrome でのサードパーティ Cookie のサポートを段階的に終了することを目標としています。準備には時間がありますが、今すぐ計画を立てるべきです。

  1. SameSite=None を使用して、コードに Cookie が含まれていないかを監査します。更新が必要な Cookie です
  2. サードパーティ Cookie がない場合は、同一サイト Cookie で最適なファーストパーティ Cookie のレシピが使用されていることを確認してください。
  3. 完全に含まれる埋め込みコンテキストでこれらの Cookie を使用する場合は、CHIPS 提案を調査してテストしてください。
  4. そうした Cookie が 1 つのまとまりを形成する複数のサイトで必要な場合は、ファーストパーティ セットの提案について検討してください。
  5. 上記のいずれの方法も当てはまらない場合は、他のプライバシー サンドボックスの提案を調査する必要があります。プライバシー サンドボックスの提案では、クロスサイト トラッキングに依存しない個々のユースケースに特化した API を開発しています。

これは概要にすぎません。作業の進展とともに、さらに多くのニュースやガイダンスをお伝えしてまいります。質問や問題がある場合や、ご自身の仕事の結果を共有したい場合は、さまざまな連絡方法を用意しています。

おいしいクッキーでも美味しいクッキーであることは覚えておいてください。クッキーを一度に少しだけ食べて、他人のクッキーを盗もうとしないでください。