Chrome の新しいデフォルトの Referrer-Policy - strict-origin-when-cross-origin

Maud Nalpas
Maud Nalpas

始める前に:

  • 「site」と「origin」の違いがわからない場合は、「same-site」と「same-origin」についてをご覧ください。
  • 仕様の元のスペルミスのため、Referer ヘッダーに R がありません。JavaScript と DOM の Referrer-Policy ヘッダーと referrer のスペルが正しい。

まとめ

  • ブラウザは、ウェブサイトにポリシーが設定されていない場合に適切なフォールバックを提供するために、プライバシーを強化するデフォルト リファラー ポリシーに向かって進化しています。
  • Chrome では、85 以降で strict-origin-when-cross-origin をデフォルト ポリシーとして段階的に有効にする予定です。これは、別のオリジンの参照 URL の値に依存するユースケースに影響する可能性があります。
  • これが新しいデフォルトですが、ウェブサイトは引き続き任意のポリシーを選択できます。
  • Chrome で変更を試すには、chrome://flags/#reduced-referrer-granularity でフラグを有効にします。こちらのデモで、変更の動作を確認することもできます。
  • リファラー ポリシー以外にも、ブラウザでのリファラーの処理方法が変更される場合がありますので、定期的に注意してください。

変更点とその理由

HTTP リクエストには、オプションの Referer ヘッダーを含めることができます。これにより、リクエストの送信元またはウェブページの URL が示されます。Referer-Policy ヘッダーは、Referer ヘッダーで使用できるデータ、デスティネーションの document.referrer のナビゲーションと iframe で使用できるデータを定義します。

サイトからのリクエストの Referer ヘッダーで送信される情報は、設定した Referrer-Policy ヘッダーによって決まります。

図: リクエストで送信されるリファラー。
参照 URL ポリシーと参照 URL

ポリシーが設定されていない場合は、ブラウザのデフォルトが使用されます。ウェブサイトは多くの場合、ブラウザのデフォルトに従います。

ナビゲーションと iframe では、document.referrer を使用して JavaScript で Referer ヘッダー内のデータにアクセスすることもできます。

最近まで、no-referrer-when-downgrade はブラウザ間で広く使用されているデフォルト ポリシーでした。しかし現在、多くのブラウザは、プライバシー保護を強化するデフォルトに移行する段階にあります。

Chrome では、バージョン 85 以降でデフォルト ポリシーを no-referrer-when-downgrade から strict-origin-when-cross-origin に切り替える予定です。

つまり、ウェブサイトにポリシーが設定されていない場合、Chrome はデフォルトで strict-origin-when-cross-origin を使用します。なお、ポリシーの設定は任意で、ポリシーが設定されていないウェブサイトにのみ影響します。

これに伴う影響

strict-origin-when-cross-origin では、よりプライバシーが確保されています。このポリシーでは、クロスオリジン リクエストの Referer ヘッダーで origin のみが送信されます。

これにより、パスやクエリ文字列など、完全な URL の他の部分からアクセスできる個人データの漏洩を防ぐことができます。

図: クロスオリジン リクエストで、ポリシーに応じて送信されるリファラー。
ポリシーに応じて、クロスオリジン リクエストでリファラーが送信される(および document.referrer)。

次に例を示します。

https://site-one.example/stuff/detail?tag=red から https://site-two.example/... に送信されるクロスオリジン リクエスト:

  • no-referrer-when-downgrade の場合: リファラー: https://site-one.example/stuff/detail?tag=red
  • strict-origin-when-cross-origin を使用する場合: リファラー: https://site-one.example/。

変わらない点

  • no-referrer-when-downgrade と同様に、strict-origin-when-cross-origin安全です。HTTPS オリジン(安全)から HTTP オリジン(安全ではない)へのリクエストが送信される場合、リファラー(Referer ヘッダーと document.referrer)は存在しません。これにより、ウェブサイトで HTTPS を使用している場合、HTTPS 以外のリクエストでウェブサイトの URL が漏洩するのを防ぐことができます。HTTPS 以外のリクエストで URL が漏洩することはありません。これは、ネットワーク上の誰もがアクセスして、ユーザーが中間者攻撃にさらされるためです。
  • 同じオリジンの場合、Referer ヘッダー値は完全な URL です。

たとえば、https://site-one.example/stuff/detail?tag=red から https://site-one.example/... に送信された同一オリジン リクエストです。

  • strict-origin-when-cross-origin の場合: リファラー: https://site-one.example/stuff/detail?tag=red

影響

他のブラウザとの議論と Chrome 84 で実施された Chrome 独自のテストに基づき、ユーザーに表示される破損は限定的になると予想されます。

完全な参照 URL を利用できることに依存するサーバーサイドのロギングや分析では、その情報の粒度が低下する可能性があります。

必要なご対応について

Chrome では、85 年(ベータ版の場合は 2020 年 7 月、安定版の場合は 2020 年 8 月)に、新しいデフォルトの参照ポリシーのリリースを開始する予定です。Chrome のステータス エントリでステータスを確認します。

変化の把握と検出

新しいデフォルトの変更内容を理解するには、こちらのデモをご覧ください。

このデモを使用して、実行中の Chrome インスタンスに適用されているポリシーを検出することもできます。

変更をテストして、サイトに影響するかどうかを確認する

Chrome 81 以降の変更をすでに試すことができます。Chrome で chrome://flags/#reduced-referrer-granularity にアクセスし、このフラグを有効にします。このフラグを有効にすると、ポリシーが設定されていないすべてのウェブサイトで、新しい strict-origin-when-cross-origin のデフォルトが使用されます。

Chrome のスクリーンショット: フラグ chrome://flags/#reduced-referrer-granularity を有効にする方法。
フラグの有効化。

ウェブサイトとバックエンドの動作を確認できるようになりました。

影響を検出するには、ウェブサイトのコードベースが参照 URL を使用しているかどうか(サーバーの受信リクエストの Referer ヘッダー、または JavaScript の document.referrer から)を確認することです。

別のオリジンからサイトへのリクエストのリファラー(具体的には、パスやクエリ文字列)を使用していて、かつ、そのオリジンがブラウザのデフォルトのリファラー ポリシーを使用している(つまり、ポリシーが設定されていない)場合、サイトの一部の機能が動作しなくなる、または動作が異なることがあります。

これがサイトに影響している場合は代替案を検討する

リファラーを使用してサイトへのリクエストのフルパスまたはクエリ文字列にアクセスする場合、次の選択肢があります。

  • CSRF 保護、ロギング、その他のユースケースには、OriginSec-fetch-Site などの代替の手法とヘッダーを使用します。参照 URL と参照 URL ポリシー: ベスト プラクティスをご確認ください。
  • 特定のポリシーが必要でユーザーに透明性がある場合には、パートナーと調整して特定のポリシーにすることができます。 他のオリジンにリソースへの特定のアクセス権を付与するためにウェブサイトがリファラーを使用する場合、アクセス制御(リファラー)が該当する可能性があります。ただし、Chrome の変更により、オリジンは引き続き Referer ヘッダー(および document.referrer)で共有されます。

ほとんどのブラウザは、参照 URL に関して同じような方向に動いていることに注意してください(参照 URL と参照 URL ポリシー: ベスト プラクティスで、ブラウザのデフォルト設定と進化をご覧ください)。

サイト全体に、プライバシーの保護を強化する明確なポリシーを導入します

ウェブサイトから発信されたリクエストで送信すべき Referer の種類(たとえば、サイトにどのポリシーを設定すべきか)

Chrome の変更を考慮しても、現時点では strict-origin-when-cross-origin などのプライバシーを強化する明示的なポリシーを設定することをおすすめします。

これにより、ユーザーを保護し、さまざまなブラウザでウェブサイトが予測どおりに動作するようになります。ブラウザのデフォルト設定に頼ることなく、ユーザー自身で管理できる方法がほとんどです。

ポリシーの設定について詳しくは、参照 URL と参照 URL ポリシー: ベスト プラクティスをご覧ください。

Chrome Enterprise について

Chrome エンタープライズ ポリシー ForceLegacyDefaultReferrerPolicy は、エンタープライズ環境で以前のデフォルトのリファラー ポリシー no-referrer-when-downgrade を適用する IT 管理者が使用できます。これにより、企業はアプリケーションのテストと更新により多くの時間を費やすことができます。

このポリシーは Chrome 88 で廃止されます。

フィードバックの送信

共有したいフィードバックや報告すべきことはありますか?Chrome の出荷予定についてフィードバックを送信するか、@maudnals に質問をツイートしてください。

すべてのレビュアー(特に Kaustitutionha Govind、David Van Cleve、Mike West、Sam Dutton、Rowan Merewood、Jxck、Kayce Basques など)への貢献とフィードバックに心より感謝いたします。

リソース