LoginSignup
0
0

More than 1 year has passed since last update.

リファラポリシーの必要性とその値

Posted at

リファラとは(ざっくり)

リンク先がどこから飛んできたか(リンク元)を知れる。
例えば、http://example.com(リンク元)に貼られたリンクからhttp://hogehoge.com(リンク先)に遷移する場合
リファラヘッダーに
Referer: https://example.comのような情報が含まれる。

リンク先の管理者はこのリファラを見ることで、ユーザーがhttp://example.comから自分のサイトに訪問したのだとわかる。

なぜリファラの設定が必要か

極端な例ですが、リンク元のサイトがhttp://sample.com?user_id=999&pass=1234かつリファラを参照できる状態のサイトの場合を考えてみます。

リンク元サイトから他ページのリンクに飛んだ時、リンク先はhttp://sample.com?user_id=999&pass=1234この情報をゲットできるので、ログインに必要な情報が分かり簡単にログインできて、ログインページで操作が可能になります。
セキュリティ的にリンク先に情報を渡したくない(社外非公開のページ等)場合には、リファラの設定が必要そうです。

ただSEOの観点からは、流入元(どこから飛んできたか)がわかった方がいい場合もあるので使い分けが必要かなと思います。

リファラポリシーの値と扱い

no-referrer

送る条件:一切送らない
refererヘッダがそのものが除かれるため一番情報が漏れない。
ただ、内部でリファラ情報をもとに検証を行っていると問題になりそう。

unsafe-url

送る条件:必ず送る
送る値:URL全体
http->httpやhttps->httpでも送られる。

https://example.com/q=http+referer+policyのようにクエリ情報も送られる。

origin

送る条件:必ず送る
送る値:originのみ
unsafe-urlと似ているが、unsafe-urlはURL全体を送るがoriginはoriginのみ送る。
https://example.com/のようなオリジン情報のみ

same-origin

送る条件:same-origin
送る値:URL全体
リンク元とリンク先のオリジンが一致する場合に、完全なURLのリファラを送る。
Downgradeでもupgradeでも送られない。
http->http OK
http->https NG

strict-origin

送る条件:Downgrade以外
送る値:originのみ

リンク先の信頼性が低い場合は送らない、それ以外はリンク元のoriginのみを送る。

no-referrer-when-downgrade

送る条件:Downgrade以外
送る値:URL全体
リンク元に比べてリンク先の信頼性が下がる場合はリファラ送らない。

リンク元がHTTPSで、リンク先が信頼できるサイトでないときにリファラは送らない。
リンク元が非HTTPSの場合は制限なくリファラを送る。

origin-when-cross-origin

送る条件①:cross-origin
送る値①:originのみ
送る条件②:same-origin
送る値②:URL全体

内部遷移はURL全体を送り、外部リンクにはoriginのみを送る。
Down/Upgrade も Cross Origin 扱いになるため、 Origin のみ送られる

strict-origin-when-cross-origin

送る条件①:cross-origin
送る値①:originのみ
送る条件②:same-origin
送る値②:URL全体
送る条件③:Downgrade
送る値③:送らない

origin-when-cross-originにdowngradeの場合を追加したもの。
多くの場合多くの場合、これが使われる。

検証はどうする?

診断くんのようなサイトを使って検証する。
リファラが送られていないことを確認する。

参照
https://www.marguerite.jp/Nihongo/WWW/RefHTML/HTML5/Referrer_policy.html#INDEX
https://blog.jxck.io/entries/2018-10-08/referrer-policy.html
https://web.dev/i18n/ja/referrer-best-practices/

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0