読者です 読者をやめる 読者になる 読者になる

MogLog

メモというか日記というか備忘録というか

HTTPリファラについて

リファラとは何か

リファラとは 【 referer 】 〔 リファラー 〕 - 意味/解説/説明/定義 : IT用語辞典

あるWebページのリンクをクリックして別のページに移動した時の、リンク元のページのこと。Webサーバーのアクセスログに記録される項目の1つ。
これを辿っていくと閲覧者がどこのサイトから訪問したのか、また、サイト内でどのような軌跡をたど ったのかなどを調べることができる。検索エンジンからの訪問の場合には、URLのパラメータ部分を調べることによって、どんな言葉で検索した結果のページから来たのかを知ることができる。
Web広告の世界では、どのサイト・ページに掲載した広告に効果があったのかを調べることができる重要な項目である。

リンクをクリックして別のページに移動した時の遷移元、というのでよくわかった。 例えばGoogleの検索を使って適当なページへ遷移した場合、リファラGoogle検索結果のURLになるんだね。

[Studying HTTP] HTTP Header Fields

参照元、すなわちリンクされている元のリソースのURIを記述するためのフィールドです。基本的Refererは送られるべきです。
但し、ブラウザのアドレス欄にURIが打ち込まれたような場合は、参照元となるリソースがありませんので、Refererを送ってはなりません。また基本的Refererは送られるべきですが、クライアントがセキュリティ上の観点から、送るべきではないと判断した場合には送らなくてもかまいません。

基本的にはリクエストに含めるべき情報だけど、クライアントの都合で含めなくても良いってことね。

CSRF対策としてのリファラ

HTTPリファラ - Wikipedia

リファラの活用はクロスサイトリクエストフォージェリ対策としても一般的だが、リファラが無効化されているとそのようなセキュリティ機構は働かない。リファラは一般に統計的用途に使われている。

クライアント側でいじることのできる情報はセキュリティ機能として役に立たないよなあ。 統計的な用途がメインなんだね。

tips

ReferrerかReferer
HTTPリファラ - Wikipedia

本来、参照元という意味の英単語は”referrer”であるが、HTTPリファラの場合は意図的に”referer”と綴る場合がある。
これは、HTTPが策定された時にヘッダ名を間違ったスペルで書いてしまい、それが今でも使われている、という歴史的経緯のためである。
前述の通り仕様上のヘッダ名は”referer”であるため、特にHTTPヘッダを直接扱うようなソフトウェアプログラムの場合、”referrer”と綴ると意図通りに動作しない場合すらある。

こういうtipsはおもしろい。こういうのがあると知識が定着しやすくなる感じがする。