Refererヘッダーとは
- アクセス元情報を渡すためのHTTPヘッダー
- Webブラウザなどにより自動でRequestヘッダーとして送信元のURL情報を付与される
Referrer-policyヘッダーとは
- Refererヘッダーで送られる情報をリクエストにどれだけ含めるかを制御するHTTPヘッダー
Refererヘッダーによる重要情報漏洩への対応
-
遷移元アクセス時のURLに重要情報(パスワードなどユーザー認証情報)が含まれていた場合、その情報が遷移先のサイトに送られてしまう。
-
例
Referer: https://example.com/auth?emailaddress=test@mail.com&password=Passw0rd
-
-
Refererヘッダーに指定される情報をReferrer-policyヘッダーによって制御することで、重要情報の漏洩を防止する。
構文
Referrer-Policy: {ディレクティブ}
ディレクティブ
ディレクティブ | 説明 |
---|---|
no-referrer | リクエストにはリファラー情報を含めない。 |
no-referrer-when-downgrade | プロトコルのセキュリティ水準が同一、もしくは向上する場合 (HTTP→HTTP, HTTP→HTTPS, HTTPS→HTTPS) に、オリジン、パス、クエリ文字列が Refererヘッダーで送信される。 |
origin | オリジンのみが Referer ヘッダーで送信される。 例: https://example.com/page.html の場合 https://example.com/ |
origin-when-cross-origin | 同一のプロトコル水準 (HTTP→HTTP, HTTPS→HTTPS) で同一オリジンのリクエストを行う場合、オリジン、パス、クエリ文字列を送信する。 オリジン間リクエストや安全性の低下する移動先 (HTTPS→HTTP) ではオリジンのみを送信する。 |
same-origin | 同一オリジンのリクエストではオリジン、パス、クエリ文字列を送信する。 オリジン間リクエストでは Referer ヘッダーを送信しない。 |
strict-origin | プロトコルのセキュリティ水準が同じである場合 (HTTPS→HTTPS) にのみオリジンを送信する。 安全性の低下する移動先 (HTTPS→HTTP) には Referer ヘッダーを送信しない。 |
strict-origin-when-cross-origin | 同一オリジンのリクエストを行う際はオリジン、パス、クエリ文字列を送信する。 オリジン間リクエストでは、プロトコルのセキュリティ水準が同じである場合 (HTTPS→HTTPS) にのみオリジンを送信する。 安全性の低下する遷移先 (HTTPS→HTTP) には Referer ヘッダーを送信しない。 |
unsafe-url | リクエストに依らず、オリジン、パス、クエリ文字列を送信する。 |