Web セキュリティReferrer-PolicyWeb 担当者学習

Referrer-Policy のおすすめ設定値|Web 担当者向け解説

ドメイン番人5 分で読めます
目次

この記事でわかること

  • Referrer-Policy が「Referer ヘッダで何を送るか」を制御する仕組み
  • 8 つの設定値の比較とプライバシー保護の強さ
  • Web サイトで推奨される値
  • Referrer-Policy 未設定で起きうる情報漏洩の典型例

Referrer-Policy は「Referer で何を送るか」を制御する

ブラウザは外部サイトにリクエストする時、自動的に Referer ヘッダを付けて「どこから来たか」を相手サーバーに伝えます。これは Web のリンク追跡やアクセス解析の基本機能で、悪いものではありません。

ただし Referer に クエリパラメータの機密情報が含まれていると、外部サイトに知られたくない情報が漏れます。

GET /partner-resource HTTP/1.1
Host: external-tool.example.com
Referer: https://app.example.co.jp/customer/[email protected]&auth_token=secret

Referrer-Policy はこの送信を制御するヘッダです。

Referrer-Policy: strict-origin-when-cross-origin

情報漏洩の典型例

Referer 漏洩の典型シナリオ

よく起きるな例:

  • 社内 SaaS 管理画面: 顧客メール / 案件 ID 等が URL に含まれる状態で、画面内の外部リンク(資料 PDF など)を踏むと相手のアクセスログに残る
  • ECサイトの注文確認画面: 注文番号 / 商品 ID 等が外部の決済代行 / 配送会社の解析ツールに渡る
  • 管理者向けダッシュボード: クエリで token を渡している場合、外部画像読み込み時に漏れる

URL にクエリで機密情報を含めない設計が理想ですが、現実には残っています。Referrer-Policy で「外部にはオリジンだけ送る」設定にすれば、URL のパスやクエリは漏れません。

8 つの設定値の比較

Referrer-Policy 値の比較

主要な値を整理します。

同一オリジン 別オリジン HTTPS HTTP 降格時
no-referrer 送らない 送らない 送らない
strict-origin-when-cross-origin(推奨) フル URL オリジンのみ 送らない
same-origin フル URL 送らない 送らない
strict-origin オリジンのみ オリジンのみ 送らない
origin-when-cross-origin フル URL オリジンのみ オリジンのみ(HTTPS→HTTP も送る)
origin オリジンのみ オリジンのみ オリジンのみ
no-referrer-when-downgrade(非推奨) フル URL フル URL 送らない
unsafe-url(非推奨) フル URL フル URL フル URL

重要な用語

  • オリジン: スキーム + ドメイン + ポート(例: https://example.co.jp
  • フル URL: オリジン + パス + クエリ(例: https://example.co.jp/customer/123?token=x
  • HTTP 降格: HTTPS から HTTP へのリクエスト(盗聴リスクがある)

推奨値: strict-origin-when-cross-origin

Referrer-Policy: strict-origin-when-cross-origin

これは モダンブラウザ(Chrome / Firefox / Safari の現行版)のデフォルトでもあります。

  • 同一オリジン内のリンクには フル URL を送る(自社内アクセス解析は機能する)
  • 別オリジン HTTPS には オリジンのみ を送る(外部に URL のパスや token が漏れない)
  • HTTP 降格時は 送らない(盗聴リスクのある経路には情報を渡さない)

ブラウザのデフォルトと同じだから書かなくても良い、と思われがちですが、明示しておくのが安全です。理由:

  1. 古いブラウザは違うデフォルトを持つ
  2. Referrer-Policy ヘッダがあれば、ブラウザのデフォルト変更にも影響を受けにくい
  3. セキュリティチェックツールで「設定済み」として検出される

より厳しくしたい場合: same-origin / no-referrer

機密情報を扱う管理画面・社内システムでは、外部リンクを踏んでも一切 Referer を送らない設定が安全:

Referrer-Policy: no-referrer

または同一オリジン内だけ Referer を送る:

Referrer-Policy: same-origin

ただしこの場合、外部の SaaS にユーザーを誘導する時のアクセス解析(自社からの流入として認識されない等)に影響が出ます。トレードオフを理解した上で選択。

サーバー別の設定例

Cloudflare(Transform Rules)

ダッシュボード → Rules → Transform Rules → Modify Response Header

  • Header name: Referrer-Policy
  • Value: strict-origin-when-cross-origin

Nginx

add_header Referrer-Policy "strict-origin-when-cross-origin" always;

WordPress(.htaccess)

Header always set Referrer-Policy "strict-origin-when-cross-origin"

meta タグでも設定可能

HTML の <head> に書いても効きます:

<meta name="referrer" content="strict-origin-when-cross-origin">

ただし HTTP ヘッダで設定するのが標準的で、エラーページ等にも一貫適用されるため安全です。

まとめ

  • Referrer-Policy は Referer ヘッダで送る情報量を制御する
  • 推奨: strict-origin-when-cross-origin(モダンブラウザのデフォルトと同じ、明示する)
  • 機密情報を扱う管理画面では same-originno-referrer も検討
  • 設定はサーバー側ヘッダで(meta タグより一貫適用される)

まずは現状を把握しましょう

自社サイトに Referrer-Policy が設定されているかは、ドメイン番人の Web セキュリティヘッダ 単発チェック で 30 秒で確認できます。

設定支援が必要な場合は Web セキュリティヘッダ診断+設定支援(3 万円〜)でご相談ください。CSP の入門は CSP(Content-Security-Policy)とは?Web 担当者のための入門、HSTS は HSTS の設定方法、クリックジャッキング対策は X-Frame-Options と CSP frame-ancestors を、カメラ / マイク / 位置情報など機能を制限する permissions-policy ヘッダー も合わせて検討してください。

総合点検は 無料のドメイン診断、SSL 単独は SSL 単発チェック をご利用ください。

次の一歩は無料診断から。