/[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.6 - (hide annotations) (download)
Sun Feb 19 23:43:58 2012 UTC (12 years, 9 months ago) by wakaba
Branch: MAIN
Changes since 1.5: +5 -1 lines
File MIME type: text/plain
updated by (anon)

1 wakaba 1.2
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 wakaba 1.3
256    
257     [102] [CITE@en[(X)HTML5 Tracking]]
258     ([TIME[2009-10-25 17:13:49 +09:00]] 版)
259 wakaba 1.4 <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 wakaba 1.5 <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 wakaba 1.6 <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>

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24