Referrer-Policyとは
Referrer-Policyは、リンクをたどったときや、画像やスクリプトを外部から読み込むときに、ブラウザが送る参照元のURL(Referer ヘッダー)の範囲を決めるHTTPヘッダーです。
Referrer-Policyが必要な理由
URLに会員ID、予約番号、検索語、パスワード再設定用のトークンなどが含まれていると、そのページから外部へのリンクや、外部サービスの読み込みを通じて、URLがそのまま相手先に渡ることがあります。相手先のアクセスログに残り、第三者が目にする可能性があります。
Referrer-Policyで送る範囲を絞れば、URLの全文ではなく、ドメインまでに留められます。
Referrer-Policyの仕組み
| 値 | 送られる参照元 |
|---|---|
no-referrer | 何も送らない |
same-origin | 同じオリジン内だけURL全文。他サイトには送らない |
strict-origin | オリジン(ドメインまで)だけ。HTTPSからHTTPへは送らない |
strict-origin-when-cross-origin | 同じオリジン内はURL全文。他サイトにはオリジンだけ。HTTPSからHTTPへは送らない |
unsafe-url | 常にURL全文(避ける) |
ほかに no-referrer-when-downgrade、origin、origin-when-cross-origin があります。指定がない場合、現在のブラウザの既定は strict-origin-when-cross-origin です。OWASPのHTTPヘッダーのチートシートは、既定に頼らず明示することを勧めています。
Referrer-Policyの確認方法
開発者ツールの「ネットワーク」タブでレスポンスヘッダーを見るか、次のコマンドを実行します。
curl -s -D - -o /dev/null https://example.com/ | grep -i '^referrer-policy'
HTMLの <meta name="referrer"> や、リンクの referrerpolicy 属性、rel="noreferrer" でも指定できるため、ページのソースも確かめます。
Referrer-Policyの設定例
多くのサイトでは、strict-origin-when-cross-origin が、安全性と計測のしやすさの釣り合いが取れた選択です。
Apache(.htaccess)の例です。
Header always set Referrer-Policy "strict-origin-when-cross-origin"
nginxの例です。
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
WordPress(子テーマのfunctions.php)の例です。
add_action('send_headers', function () {
header('Referrer-Policy: strict-origin-when-cross-origin');
});
よくある間違いと注意点
- HTTPリクエストのヘッダーは、綴りの誤りが仕様に残った
Refererですが、ポリシーのヘッダーはReferrer-Policyと、rが2つ並びます。Referer-Policyと書くと効きません。 no-referrerにすると、外部サイトに参照元が一切渡らなくなります。提携先やアフィリエイトの計測が参照元を使っている場合、成果の判定に影響が出ることがあります。unsafe-urlは、URLの全文をHTTPの外部サイトにも送ります。使いません。- URLにトークンを載せない設計にすることが根本の対策です。ヘッダーは補助です。
Webサイト セキュリティチェッカーで確認する
Webサイト セキュリティチェッカーは、Referrer-Policyのヘッダーが返っているかを診断します。HTMLのmetaタグで指定されている場合は、設定済みとして扱います。
関連用語
関連する用語
サイトの設定を無料で確認する
サイトのURLを入力するだけで、Referrer-Policy などの設定状況を診断できます。Webサイト セキュリティチェッカー「Security Checker X」は、登録なしで使えます。









