« このBlogの戦闘力は64 | メイン | NintendoDSのソフトが売れる訳 »

December 22, 2006

https://ページからhttp://ページへのリンクした場合リファラーは送出されない

「そんなの常識だよ」という人は無視してください。
知りませんでした。https://ページからhttp://ページへのリンクした場合リファラーは送出されないんですね。
昨日、弟から「https://ページからhttp://ページへのリンクした時にリファラーが取得できないのだけど、これって何が原因?」と聞かれ、「いや取れるだろ」と答えたのですがよくよく調べてみるとブラウザの仕様でhttps://ページからhttp://ページへのリンクした場合はリファラーは送出されないようです。

以下、産業技術総合研究所のページより引用

Internet Explorerのバージョン4.0以降を使用している場合には、Refererは送出されません。これは、Internet Explorerの4.0以降が、「https://」のページ上に存在するリンクを辿ったときにはRefererを送出しない仕様となっているためです。
これに対し、Netscape NavigatorやNetscape 6等が使用されている場合には、Refererが送出されます。

https:// のページから http:// のページへのリンクをクリックしたときに、 Internet Explorerが Referer: を送出しない仕様となっていることは、現在は以下のページに記されている。

 [INFO] セキュリティ保護されていない状況で Internet Explorer から Referer ヘッダーを送信しない, マイクロソフト サポートオンライン 

これは2001年当時の状況を示したものであり、その後、Netscape 6 はバージョン6.1 以降では、Internet Explorerと同様にReferer:を送出しないようになった。現在の各ブラウザの挙動を以下に整理する。

表1: https:// から http:// へのリンクでRefererを送出するか
Netscape 4.x	する
Netscape 6.01	する
Netscape 6.1	しない
Netscape 6.2	しない
Netscape 7	しない
Firefox 1.0.2	しない
Internet Explorer 6(Windows版)	しない
Internet Explorer 5.23(Mac OS版)	する
Safari 1.2.4	する
w3m 0.5.1	する

https:// ページから http:// ページへのリンクでReferer:を送出しないことは、 RFCに定められてはおらず、また、送出する挙動がブラウザの脆弱性としてみなされるコンセンサスはないため、送出しない動作に期待してWebアプリケーションを構築するべきでない。つまり、URLにセッションIDなどの秘密情報を含めないようにするべきである。 

RFCにはこんな感じで書かれています。

15.1.3 Encoding Sensitive Information in URI's

Because the source of a link might be private information or might reveal an otherwise private information source, it is strongly recommended that the user be able to select whether or not the Referer field is sent. For example, a browser client could have a toggle switch for browsing openly/anonymously, which would respectively enable/disable the sending of Referer and From information.

Clients SHOULD NOT include a Referer header field in a (non-secure) HTTP request if the referring page was transferred with a secure protocol.
(参照ページがセキュアだったなら、クライアントはHTTPリクエストでリファラーヘッダーを送出すべきではない)

Authors of services which use the HTTP protocol SHOULD NOT use GET based forms for the submission of sensitive data, because this will cause this data to be encoded in the Request-URI. Many existing servers, proxies, and user agents will log the request URI in some place where it might be visible to third parties. Servers can use POST-based form submission instead 

SHOULD NOTってなってますが、実際はMustNotなところでしょうか。
上記の産業技術総合研究所のページにある各ブラウザの対応表でも、最新のものすべてリファラーを出さない仕様になっていますからね。

一昔前はページ遷移をリファラーでチェックするような仕組みを使っていましたが、今どきは使わないというか使えないですね。

Author nitoka : December 22, 2006 03:11 PM

TrackBack

TrackBack URL:
http://www.nitoka.net/blog/mt-tb.cgi/260

this entry refers to the following entry: https://ページからhttp://ページへのリンクした場合リファラーは送出されない:

» httpsからhttpへのアクセスはリファラーは送出されない from kawama.jp
です。 実際にやって試しました。httpsのページからhttpのページにリンクを... [read more]

TrackBack Date: November 6, 2007 05:11 PM

Comment

大変勉強になりました。ありがとうございます。

Author : LifeMaker : June 6, 2010 01:52 PM

このような貴重な情報を共有していただきありがとうございます!

Author : Oman : February 27, 2010 09:17 AM

Please, comment




save