始める前に:
- 「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
ヘッダーによって決まります。
ポリシーが設定されていない場合は、ブラウザのデフォルトが使用されます。ウェブサイトは多くの場合、ブラウザのデフォルトに従います。
ナビゲーションと 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 の他の部分からアクセスできる個人データの漏洩を防ぐことができます。
次に例を示します。
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
のデフォルトが使用されます。
ウェブサイトとバックエンドの動作を確認できるようになりました。
影響を検出するには、ウェブサイトのコードベースが参照 URL を使用しているかどうか(サーバーの受信リクエストの Referer
ヘッダー、または JavaScript の document.referrer
から)を確認することです。
別のオリジンからサイトへのリクエストのリファラー(具体的には、パスやクエリ文字列)を使用していて、かつ、そのオリジンがブラウザのデフォルトのリファラー ポリシーを使用している(つまり、ポリシーが設定されていない)場合、サイトの一部の機能が動作しなくなる、または動作が異なることがあります。
これがサイトに影響している場合は代替案を検討する
リファラーを使用してサイトへのリクエストのフルパスまたはクエリ文字列にアクセスする場合、次の選択肢があります。
- CSRF 保護、ロギング、その他のユースケースには、
Origin
やSec-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 など)への貢献とフィードバックに心より感謝いたします。