/[pub]/suikawiki/sw4data/ids/2/166.txt
Suika

Contents of /suikawiki/sw4data/ids/2/166.txt

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.10 - (show annotations) (download)
Mon Apr 7 05:25:41 2014 UTC (10 years, 7 months ago) by wakaba
Branch: MAIN
CVS Tags: HEAD
Changes since 1.9: +5 -1 lines
File MIME type: text/plain
updated by (anon)

1
2
3 * Referer と Referrer
4
5 - Referer は referrer の typo だけど、もはや直しようがない。
6 - [[JavaScript]] なんかは [[HTTP]] の referer (相当)を正しく referrer と呼んでいたりする。
7 - [42] [CODE(JS)[document.referrer]]
8 - [45] >>42 [[DOM0]]
9
10
11 * 変な Referer
12
13 - [30] ''http://inazuma/content?[VAR[...]]'' という Referer
14 値が引っかかることがあります。検索してみると Referer log は大量にかかります。
15 が、 inazuma の正体に触れた情報はほとんどありません。
16 - [31] ''http://inazuma/*とは?'' <http://misuzilla.org/docs/inazuma>
17 で同じように疑問が呈されていて、正体の'''可能性'''のあるものが書いてあります。
18 検索系の串っぽいです。
19 - [32] それにしても、[[完全修飾ドメイン名]]でない値を送るなんて [[UA]] もどうかしてます。
20 ([[WinIE]] だろうか。)
21 - [33] [WEAK[2002-12-17 (火) 14:59]] ''[[Name_Not_Found]]'': <IW:Google:"\"http://inazuma/content\"">
22 - [44] ''Proxomitron-J / 少年ナイフの Referer について'' <http://www.pluto.dti.ne.jp/~tengu/proxomitron/kniferef.html>: 作者の好きな URI を必ず Referer にしていたソフトウェアの例。その URI の使用者の側に迷惑をかけたからその仕様はやめたらしい。
23 - [51] [CODE(HTTP)[ [unknown origin] ]]
24 - [59] >>51 は一部の[[防火壁]][[串]]が元あった Referer を削除して代わりに書き加えるみたいです。
25 - [61] 壊れた[[検索円陣]]索引付け器は適当な整数値を [CODE(HTTP)[Referer:]] で送りつけてくることがあるそうです。
26 [[#comment]]
27
28
29 ** 栞
30
31 [5] 栞から辿った場合に、 "Referer: bookmarks"
32 をつける [[UA]] があるみたいです。
33 ([[User-Agent:欄]]の値: "Mozilla/4.7 [ja] (Macintosh; U; PPC)")
34 - [55] 最近の [[Mozilla]] は[WEAK[いつからかしりませんが]]栞の項目の設定画面で、その栞を挟んだ [[URI]] を参照するときに使われる [CODE(HTTP)[Referer]] の値が設定できるみたいです。
35 [[#comment]]
36
37
38 ** Referer 漏れ
39
40 [3] [[IE]] で、特定の条件でリンクを辿っていないのに閲覧した無関係の
41 [[URI]] が送られることがある。
42
43 [57] 同じような Referer 漏れに見える、
44 2種類の現象があります。
45 - Referer は送られない様に設計されているはずなのに、なぜか条件が揃うと送られてしまう — 90年代後半に幾つかのブラウザで見つかったバグ。
46 - 何も考えてないので、よく考えれば
47 (あるいは現在の価値観からすれば)
48 送らないで欲しいのだけど、
49 そのブラウザの仕様上「正しく」
50 送られてしまう — 90年代中頃までに幾つかのブラウザに見られた状況。
51
52 [4] 古い [[NetscapeNavigator]] でも起こったようです。
53 - [10] [WEAK[2002-11-21 (木) 19:12]] ''[[Name_Not_Found]]'': この wiki のあちこちで、(現時点では) 絶対ありえない <http://suika.fam.cx/> の referer が観測されておるのだが・・・
54 - [22] [CODE[MosaicView/2.0009 Win32 NEC/9]] という太古(1996)の [[Mosaic]] variant は、リンクをたどっていないにもかかわらず直前の [[URI]] を送ります。しかもそれが [[file:]] URI でもお構いなく。
55 - [23] [WEAK[2002-12-06 (金) 16:05]] ''[[Name_Not_Found]]'': MosaicView/2.0009 Win32 NEC/9
56
57 [56] >>22 Mosaic Netscape 0.9
58 もそんなもんです。
59 古い時代は今とは違った privacy
60 感覚でしたから。。。
61
62 - [24] [WEAK[2002-12-13 (金) 18:39]] ''>>10'': どっかの糞 UA または privacy を謳う串の類が、適当にそこのサーバーのルートを Referer として送ってくるんじゃないか? だれか検証してみてくれ。
63 - [41] >>3- の Referer 漏れとちょっと趣が異なりますが、 [[JavaScript]] の [CODE[location.href]] を使って飛んだ場合に、 [[UA]] によっては Referer が送られます。普通は問題ないのですが、この JavaScript が [[Bookmarklet]] だった場合で、例えば利用者に入力を求めてその入力に従って移動するようなものであったら、全く関係ない URI が Referer として送られてしまうことになります。 ([[Mozilla]] とかでなります。送られるのは [[javascript:]] ではなくて既に表示されている URI なんですね)
64
65 [68]
66 [CITE[スラッシュドット ジャパン | EZwebブラウザに不正なReferer送出を行う不具合]] <http://slashdot.jp/security/05/12/09/1021257.shtml>
67 ([[名無しさん]] [WEAK[2005-12-10 03:12:19 +00:00]])
68
69 [69]
70 [CITE[JP Vendor Status Notes]] <http://jvn.jp/jp/JVN%2315243167/index.html>
71 ([[名無しさん]] [WEAK[2005-12-10 03:19:09 +00:00]])
72
73 [[#comment]]
74
75
76 ** 参考
77
78 - (IE の Referer 漏れについての話) <http://www.st.ryukoku.ac.jp/~kjm/security/memo/referer-bug.txt>
79 - [43] ''Re:'' <http://www.st.ryukoku.ac.jp/~kjm/security/memo/referer-bug.txt>
80 - [60] ''Get Rid Of The Turkeys Who Use'' <http://www.webmasterworld.com/forum23/2040-3-15.htm>: 種々の UA が送ってくる Referer の形式的分類がありまして、参考にさせていただいています。
81 [[#comment]]
82
83
84 * Referer による接続制御
85
86 [1] Referer: 欄の値により、接続制御することがあります。
87 例えば画像資源において、 Referer: 値が自分のサーバー内を指すものと思われないときには資源を渡さないという方法は良く使われます。
88
89 しかしこの方法は Referer を返さない[[利用者エージェント]]に対しては正しく動作しない可能性が強いですし、そうでなくても
90 World Wide Web の最大の特徴の一つである[[ハイパーリンク]]に対して著しく不利益を与えるものです。
91
92 ですから、 Referer による接続制限は、それによる影響を十分に理解した上で、どうしても必要な場合においてのみ行うように、慎重に検討する必要があります。また、その場合においても
93 Referer を返さない[[利用者エージェント]]に対して不利益がないように十分考慮しなければならないでしょう。
94 (Referer を返す [[UA]] でご利用下さい、はそれだけで既に不利益です。)
95
96 [2] なお、 Referer は [[HTTP]] において必須の欄ではありません。プライバシーの観点から値を与えない実装も数多く存在します。
97 [[#comment]]
98
99
100 * Referer による逆リンク作成
101
102 [66]
103 Referer 情報は鯖側で様々な用途に利用できますが、仕様書 ([[RFC 2616]])
104 にも言及がある代表的な使用例の一つが[[逆リンク]]一覧の作成です。
105
106 Referer 情報を見ることにより、
107 ある[[資源]]に関する言及の所在をその[[資源]]の[[著者]]が容易に発見できます。
108
109 [67]
110 Referer 情報は閲覧者が直前に何を見ていたかの情報であり、
111 ともすればプライバシーの問題にもなりかねません。 [[RFC 2616]]
112 は[[利用者エージェント]]に、[[利用者]]が referer
113 情報を送信するかどうかを選択できることを求めています。
114 Referer 情報を逆リンクなどの形で公表されたとしても、
115 閲覧者がそれを[[著者]]に抗議したり、
116 不快感を示したりするのはお門違いです。
117
118 [[#comment]]
119
120
121 * いつ Referer を送るか
122
123 [11] Referer:
124 欄に値を入れて送る場合には、例えば次の場面があり得ます。
125 - [12] ハイパーリンクを順方向に辿る場合
126 -- ([CODE(HTML)[[[a]]]],
127 や [CODE(HTML)[[[link]]]], [[XLink]] の[[単純リンク]]など)
128 - [14] ブラウザの項目などから飛ぶ場合 (>>5 も参照)
129 - [15] [[UA]] の機能によるハイパーリンクから飛ぶ場合
130 -- (文書中の [[URI]] を押した場合とか。)
131 -- ([[WinIE]] の[[スマートタグ]]のような仕組みとか。)
132 - [13] 埋め込み資源を取り寄せる場合
133 -- (画像, [[スタイル・シート]], [[スクリプト]]など)
134 -- [39] [CODE(HTML)[[[frameset]]]]/[CODE(HTML)[[[frame]]]] とか
135 [[XFrames]] とか。
136 - [37] 入力欄の値を送信する場合
137 -- ([CODE(HTML)[[[form]]]], [[XForms]] など)
138 [[#comment]]
139
140 [16] どういう時に Referer URI を送るかは、実装依存です。
141 (サーバー側は何らの仮定もするべきではありません。)
142 ただ常識的に考えて、 Referer を送る場合は >>12
143 は必須でしょう。
144
145 - [9] [[Mozilla]] では、 ''user_pref("network.http.sendRefererHeader", 0/1/2);'' で Referer を送るか制御できます。 0 で不送信, 1 でリンクを辿った時送信, 2 で1に加えて埋め込み画像などの取得にも送信で、 2 が既定値です。
146 - [38] [SAMP[html]] が [SAMP[css1]] を参照していて、 [SAMP[css1]] が更に [SAMP[css2]] を参照しているとします。この時、 [SAMP[css1]] と [SAMP[css2]] のどちらを取り寄せる時にも [SAMP[html]] の URI を送る UA があります (具体的には [[WinIE]])。しかしこれはおかしいと思われます。
147
148 [63]
149 フレームとしてのリンク ([CODE(HTMLe)[[[frame]]]]) は実際に UA
150 によって [CODE(HTTP)[[[Referer:]]]] を送ったり送らなかったりするようです。
151 ([[名無しさん]] [sage] [WEAK[2005-02-03 23:22:24 +00:00]])
152
153 [[#comment]]
154
155
156 ** どういうときに Referer を送らないか
157
158 [17] 利用者のプライバシーを考えつつも、分析目的の Referer
159 情報をサーバーに提供するために、例えば次のような実装が考えられます。
160 - [18] 同じサーバーの URI なら送信する。
161 - [19] 特定の{サーバー|種類(scheme)}の URI なら送信{する|しない}。
162
163 - [20] 例えば検索円陣の URI は送信しないで欲しい、
164 のような利用者の要望に応えられる実装が望ましいでしょう。
165 - [34] [WEAK[2002-12-17 (火) 15:01]] ''[[Name_Not_Found]]'': >>32 のように、 [[FQDN]] 以外を参照する [[URI]] は送信するべきではないでしょう。 Private などの[[特殊-IPv4-address]], [[特殊IPv6アドレス]]も同様。
166 - [46] [CODE(URI)[[[https:]]]] な世界から [CODE(URI)[[[http:]]]] な世界に移るときに Referer が送られるのを気にする人もいます。多分本質的には気になることではないと思うのですが、安全なはずの世界の側のへたれ実装が、 [CODE(URI)[https:]] だからといって[[合言葉]]に準じるものを URI に含めていたりしたら問題ですね。まあそんな設計者が悪いんですが。
167 - [47] それとか、素の HTTP であっても、[[認証]]が使われている世界から使われていない世界、あるいは違う [[realm]] な世界に行く時にも注意が必要です。もちろんこっちの場合も、合言葉やそれに準じるものを URI に使ったりするほうが悪いんですが。それに制限領域だからといって URI がばれると困るような設計はどうかと思うんですが。だけど現実問題、やっぱり >>46 もこれも気にした方がいいのかもなあ。
168 - [48] また、 HTTP でも [CODE(URI)[[[ftp:]]]] の場合でもその他の場合でも、 URI の最初の方に利用者名や合言葉を含めることができますが、安全性と個人情報保護の観点から、''必ず''削除するように注意した方がよいと思われます。
169 - [49] [[MUA]] にブラウザ部品を流用している [[UA]]
170 とかでは、内部的に使っているメッセージの URI
171 とかが流用してしまわないように注意するべきです。
172 -- でも[[ニュース]]の記事なんかなら、別に[[メッセージID]]の URI
173 が送られても構わない気がします。
174 -- 多くの実装の形態で言うところの[[フォルダ]]とかの区分ごとに利用者が指定できるのが一番いいでしょうか。
175 -- その指定に関わらず [[spam]] と判定されているメッセージの場合は絶対に送らないとか、細かい設定が出来るとなお良いですね。
176 - [50] [[付属文書系URI]] とかなら [CODE(URI)[[[file:]]]]
177 同様に送らないようにする、とかの UA の実装ごとの調整も必要でしょう。
178 -- [[scheme]] を利用者又は追加モジュールが容易に追加できる形態の
179 UA だったら、 default では送らないことにしておいて、
180 特に指定 (モジュールの定義で指定でも、利用者が指定でも、
181 なんでもいい。) した時にだけ送るようにするのがいいかも。
182 - [58] >>19,>>50 ブラウザにとって未知の scheme は、とりあえず送らないを既定にしておく方が色々安全でしょうね。
183 [[#comment]]
184
185
186 * Referer 総合 Q&A
187
188 [[#form(newq):'':'**%text(source=>qsum);%n;%n;[%index;] \'\'\'質問\'\'\' (\'\'%name;\'\'%text(source=>mail,prefix=>" [",suffix=>"]");%iif(source=>record-date,true=>" [WEAK[%date;]]");): %text(source=>q);%n;%n;[[#form:\'%percent;radio(id=>type,label=>回答,value=>false,default); or %percent;radio(id=>type,label=>追加質問,value=>true);: %percent;text(label=>"名前 : ",id=>name,size=>"9.5"); %percent;text(label=>"メイル: ",id=>mail,size=>9.5); %percent;check(default,id=>record-date,label=>日付を記録);%percent;n;%percent;textarea(id=>a,size=>20);\':\'[%percent;index;] %percent;iif(source=>type,true=>"\\\'\\\'\\\'質問\\\'\\\'\\\' ",false=>"");\\\'\\\'%percent;name;\\\'\\\'%percent;text(source=>mail,prefix=>" [",suffix=>"]");%percent;iif(source=>record-date,true=>" [WEAK[%percent;date;]]");: %percent;text(source=>a);%percent;n;\':\'%percent;require(a);\']]':'%require(q);']]
189
190
191 ** 新しい質問の追加
192
193 [[#form:'%text(id=>qsum,label=>質問要約,size=>10); %text(label=>"名前 : ",id=>name,size=>"9.5"); %text(label=>"メイル: ",id=>mail,size=>9.5); %check(default,id=>record-date,label=>日付を記録);%n;%textarea(id=>q,label=>質問,size=>20);':'':'%output(id=>newq);%require(q);']]
194
195
196 * メモ
197
198 [62]
199 ここのように頁の名前に[Q[Referer]]が入っていると referer spamer を引き寄せることができるようですね(w
200 ([[名無しさん]] [WEAK[2005-01-31 08:26:42 +00:00]])
201
202 [64]
203 '''どのURI参照を Referer とするか''':
204 [[HTML]] の [CODE(HTMLe)[[[a]]]] や
205 [CODE(HTMLe)[[[img]]]] のような単純なリンクが単純に存在する場合は Referer
206 となるべき URI 参照は自明 (その[[文書実体]]の URI 参照) ですが、
207 [[取込み]]や[[輸入]]が複雑に絡むと何を送るべきかわからなくなることがあります。
208
209 例:
210 - 外部 [[CSS]] [[スタイル・シート]]から参照された画像
211 -- スタイル・シートの URI 参照を使うのが自然に思えます
212 -- 利用者エージェントによっては文書の URI 参照を使います
213 - 外部スクリプトから [[DOM]] によって
214 [CODE(HTMLe)[[[img]]]] [CODE(HTMLa)[[[src]]]] に URI 参照を設定することによるリンク
215 -- 意味的に[Q[参照]]しているのは、
216 もしかすると外部スクリプトかもしれません。
217 -- 実際に画像を参照しているのは、
218 [CODE(HTMLe)[img]] 要素が含まれている文書です。
219 -- ただし元々の文書にはその画像への参照は存在していませんでした。
220 静的に存在していない参照の参照元とみなされるのは奇妙に思えるかもしれません。
221 -- なお、技術的に、 [CODE(HTMLa)[src]]
222 属性を指定したスクリプトの URI 参照を何らかの手段で覚えておくというのは厄介なことが多そうです。
223 -- 動的な参照なら Referer なしにする、というのも一つの解かもしれません。
224 - [[外部解析対象実体]]の中の [[XLink]] による参照
225 -- 外部解析対象実体内の要素の[[基底URI]]
226 は保存されます [SRC[[[XML情報集合]]]]。
227 実体自身の URI 参照も保存するという実装にしても悪くはないでしょう。
228 -- 仮に保存したとして、 [[DOM]]
229 などによる操作で他の場所に移したりしたら、それでもその URI 参照は保存されているべきでしょうか?
230 - [[XInclude]] で取込んだ部分の中にある参照
231 - [[XSLT]] [[結果木]]にある参照
232 -- XSLT による変換結果は、元の文書と同じではありません。
233 元の文書の URI 参照を Referer としてもよいのでしょうか?
234 -- 参照は元の文書に存在して、それを変換したものであるかもしれませんし、
235 元の文書には存在せず、 XSLT
236 スタイル・シートによって補われたものかもしれません。
237 - [[C]] の[[前処理]]のような参照によって生じた参照
238
239 ([[名無しさん]])
240
241 [65]
242 各々の書式の処理モデルにおいて、参照を解釈した結果[Q[溶け込]]んでしまった部分は区別せずに (区別できずに) 参照元の一部であったかのように扱い、参照を解釈しても元々の区別が保存され続ける場合には外部から取込んだ部分の元の URI 参照を保存しておくのが、
243 実装的には一番楽な方法であると思われます。
244
245 しかし、前述のように、動的に作られる参照は非直感的なことがあり得るなど、
246 問題が無いわけではありません。
247 ある URI 参照が何を意味しているのかという根本的な問題にも関係してきます。
248
249 [100]
250 [CITE@ja-JP[高木浩光@自宅の日記 - Refererを誤送信するブラウザが最近も存在する, 栃木県警の無断リンク禁止規定の復活はシステム不具合による事故]] ([[高木浩光]] 著, [TIME[2007-07-07 22:41:18 +09:00]] 版) <http://takagi-hiromitsu.jp/diary/20070707.html#p01>
251
252 [101] [CITE[リファラ実験 - referrer test]] ([TIME[2005-11-07 07:42:41 +09:00]] 版) <http://www.teria.com/~koseki/memo/referrer/>
253
254
255
256
257 [102] [CITE@en[(X)HTML5 Tracking]]
258 ([TIME[2009-10-25 17:13:49 +09:00]] 版)
259 <http://html5.org/tools/web-apps-tracker?from=4328&to=4329>
260
261 [103] [CITE@en[HTML5 Revision Tracker]]
262 ([TIME[2010-02-14 20:31:47 +09:00]] 版)
263 <http://html5.org/tools/web-apps-tracker?from=4726&to=4727>
264
265 [104] [CITE@en[HTML5 Revision Tracker]]
266 ([TIME[2010-02-14 20:31:47 +09:00]] 版)
267 <http://html5.org/tools/web-apps-tracker?from=4726&to=4727>
268
269 [105] [CITE[Request Headers in the HTTP protocol]]
270 ( ([TIME[2001-11-29 11:01:38 +09:00]] 版))
271 <http://www.w3.org/Protocols/HTTP/HTRQ_Headers.html#z14>
272
273 [106] [CITE[141641 – disabling cross-site HTTPS referrers breaks sites ''''''[''''''was: when leaving https, should send host+port as referrer instead of no referer'''''']'''''']]
274 ( ([TIME[2012-03-25 11:23:08 +09:00]] 版))
275 <https://bugzilla.mozilla.org/show_bug.cgi?id=141641>
276
277 [107] [CITE@en[Web Applications 1.0 r7341 Attempt to actually define what Referer headers are used for a whole host of things that were poorly defined. Also: cleanup of a bunch of editorial mistakes I found from past such attempts. Mark every fetch algorithm use for sanity in the future. Block data:, javascript:, and about:blank referrers. Note: This relies on not-yet-done changes to CORS and XHR.]]
278 ( ([TIME[2012-09-13 08:14:00 +09:00]] 版))
279 <http://html5.org/tools/web-apps-tracker?from=7340&to=7341>
280
281 [108] [CITE[IRC logs: freenode / #whatwg / 20120912]]
282 ( ([TIME[2012-09-14 23:56:43 +09:00]] 版))
283 <http://krijnhoetmer.nl/irc-logs/whatwg/20120912>
284
285 [109] [CITE[ncsa-mosaic/CHANGES at master · alandipert/ncsa-mosaic]]
286 ( ([TIME[2014-04-07 05:25:37 +09:00]] 版))
287 <https://github.com/alandipert/ncsa-mosaic/blob/master/CHANGES#L20>

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24