2014-02-02

HTTPリファラについて

リファラとは何か

http://e-words.jp/w/E383AAE38395E382A1E383A9.html

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

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

http://www.studyinghttp.net/header

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

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

CSRF対策としてのリファラ

http://ja.wikipedia.org/wiki/HTTP%E3%83%AA%E3%83%95%E3%82%A1%E3%83%A9

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

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

tips

ReferrerかRefererか
http://ja.wikipedia.org/wiki/HTTP%E3%83%AA%E3%83%95%E3%82%A1%E3%83%A9

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

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