[W3C]Referrer Policyについて
W3CのWeb Application Security WG が公開している、「Referrer Policy」というRecommendationを解説していきます。英語の原文は以下です。
概要
ウェブサイトのreferrer policyの定め方や、外部に対するリクエストのRefererヘッダーに対してどんなポリシーを設定できるのかを説明している文書です
そもそもRefererヘッダーとは
RefererヘッダーはMDNのドキュメントを見ると以下のように記載があります。
例えば、Google検索からとあるサイトに遷移した場合はRefererヘッダーにgoogle.comが入ります
Refererヘッダーに制御が必要な理由
1. プライバシーの観点
遷移元のURLが個人情報を含むようなサイトだった場合、遷移先のサイトにRefererヘッダーを通じて個人情報が漏れる可能性があります
2. セキュリティーの観点
遷移元のアプリケーションがURLベースのセッションidを使っている場合、Refererヘッダーを通してセッションIDが漏れてしまう可能性があります。
Referrer Policyの種類について
リファラポリシーには次のような種類があります。
""(空文字)
他のReferrer policyにフォールバックする。もしなければ"no-referrer-when-downgrade" がデフォルト
"no-referrer"
リファラの情報を全く送らない
"no-referrer-when-downgrade"
プロトコルのセキュリティ水準が同一である、または向上する場合 (HTTP→HTTP, HTTP→HTTPS, HTTPS→HTTPS)場合は、URL全体を送信
セキュリティ水準が低下するリクエスト (HTTPS→HTTP, HTTPS→file)の場合は何も送信しない
"same-origin"
同じオリジンの場合はURL全体を送る。それ以外は何も送らない。
"origin"
オリジンの情報だけ送る
"strict-origin"
プロトコルのセキュリティ水準が同じである場合 (HTTPS→HTTPS)場合は、オリジンのみ送信
安全性の低下する移動先 (HTTPS→HTTP)の場合は何も送信しない
"origin-when-cross-origin":
同じオリジンの場合はURL全体、クロスオリジンの場合はオリジンだけを送る
"strict-origin-when-cross-origin"
同じオリジンの場合はURL全体を送信
プロトコルのセキュリティ水準が同じである場合 (HTTPS→HTTPS)は、オリジンのみ送信
安全性の低下する移動先 (HTTPS→HTTP)の場合は何も送信しない
"unsafe-url"
全てのリクエストに対してURL全体を送る