abc.com/index.html
↓
efg.com/index.html(空白ページ)
↓
hij.com/index.html
私はすべてのドメインの所有者で、すべてのドメインのサイトにアクセス解析を入れています。
hji.comだけは、「ほかの人」もアクセス解析を入れています。つまり、「ほかの人」は、abc.com/index.html とefg.com/index.htmlにアクセス解析を入れることはできません。もちろん、abc.com/index.html、efg.com/index.htmlに入っているアクセス解析は私のアクセス解析で、その管理画面は「ほかの人」は見ることができません。権限がないので、生ログなども見れません。
ユーザーがブラウザを使って、abc.com/index.htmlにアクセスすると、自動で.htaccessでリダイレクトされて、hij.com/index.htmlに飛びます。
このとき、hji.comにアクセス解析を入れているほかの人は、ユーザーがefg.com/index.htmlから来たことは、リファラをみれば簡単にわかると思いますが、さらにその前に、abc.com/index.htmlにいたこともわかるでしょうか?つまり、リファラで2つ前のサイトを特定することはできるでしょうか?
hji.comだけしかアクセス解析を入れないという条件で、リファラ以外の方法で、2つ前のサイトを特定することはできるでしょうか?
また、余談にはなりますが、abc.com/index.html、efg.com/index.html、hij.com/index.html の収納されているサーバーのIPは基本的にはすべて異なりますが、すべて同じ場合は、特定される可能性が上がるでしょうか?
これも、余談にはなりますが、abc.com/index.html、efg.com/index.html、hij.com/index.html のドメインはすべてすべて異なりますが、abc.com/index1.html、abc.com/index2.html、abc.com/index3.htmlのように、すべて同じ場合は、特定される可能性が上がるでしょうか?
よろしくおねがいします。
初心者
Re: 初心者
リファラというのは,HTTPにおけるReferer Header Fieldのことでしょうか。
であれば,RFC 7231 Hypertext Transfer Protocol (HTTP/1.1): Semantics and Contentによると,
で,どのURIがReferer Fieldに設定されるかというと,サーバーから300番台のStatus Codeが返った場合,RefererにはOriginページが設定されるようです。
このあたりはRFCには記述がないようで,リファラ実験などの先人の調査によるものです。
他の方法に関しては,上記のページとは異なり,現在ではだいたい空になるようです。
実際に仮想マシンを使うなりして3台のサーバーを用意して,そこへの通信をブラウザのネットワークキャプチャ機能なり,Fiddlerなりで調べるのが手っ取り早いと思うのですが。
であれば,RFC 7231 Hypertext Transfer Protocol (HTTP/1.1): Semantics and Contentによると,
とのことなので,Referer Header FIeldにはひとつのURIしか指定できません。Referer = absolute-URI / partial-URI
で,どのURIがReferer Fieldに設定されるかというと,サーバーから300番台のStatus Codeが返った場合,RefererにはOriginページが設定されるようです。
このあたりはRFCには記述がないようで,リファラ実験などの先人の調査によるものです。
オフトピック
そもそもRFCに「redirection」の定義がないように思える
実際に仮想マシンを使うなりして3台のサーバーを用意して,そこへの通信をブラウザのネットワークキャプチャ機能なり,Fiddlerなりで調べるのが手っ取り早いと思うのですが。
Re: 初心者
ありがとうございます。
ユーザー名:と件名:を逆にしてしまいましたが、今から変更するのもややこしいので、最初のまま投稿させて頂きます。
>>で,どのURIがReferer Fieldに設定されるかというと,サーバーから300番台のStatus Codeが返った場合,RefererにはOriginページが設定されるようです。
これは紹介して頂いたページ、「リファラ実験」の「Locationヘッダ→Locationヘッダ→リファラ表示」のことですか?
つまり、Locationヘッダで2回リダイレクトをした場合、リファラで2つ前のサイトを特定できる(abc.com/index.htmlにいたことを特定できる)場合もあるのでしょうか?
>>実際に仮想マシンを使うなりして3台のサーバーを用意して,そこへの通信をブラウザのネットワークキャプチャ機能なり,Fiddlerなりで調べるのが手っ取り早いと思うのですが。
初心者なので専門的なことはできませんが、実際に自分のアクセス解析を用いて、簡単な実験はしてみようとは思っています。しかし、すべてンパターンやブラウザを網羅するのは無理なので、理論的なことを知りたいと考えています。
(Locationヘッダ以外のリダイレクトでも、)2つ前のサイトを特定できる(abc.com/index.htmlにいたことを特定できる)場合もあるのでしょうか?ここが一番知りたいポイントでもあります。
よろしくおねがいします。
ユーザー名:と件名:を逆にしてしまいましたが、今から変更するのもややこしいので、最初のまま投稿させて頂きます。
>>で,どのURIがReferer Fieldに設定されるかというと,サーバーから300番台のStatus Codeが返った場合,RefererにはOriginページが設定されるようです。
これは紹介して頂いたページ、「リファラ実験」の「Locationヘッダ→Locationヘッダ→リファラ表示」のことですか?
つまり、Locationヘッダで2回リダイレクトをした場合、リファラで2つ前のサイトを特定できる(abc.com/index.htmlにいたことを特定できる)場合もあるのでしょうか?
>>実際に仮想マシンを使うなりして3台のサーバーを用意して,そこへの通信をブラウザのネットワークキャプチャ機能なり,Fiddlerなりで調べるのが手っ取り早いと思うのですが。
初心者なので専門的なことはできませんが、実際に自分のアクセス解析を用いて、簡単な実験はしてみようとは思っています。しかし、すべてンパターンやブラウザを網羅するのは無理なので、理論的なことを知りたいと考えています。
(Locationヘッダ以外のリダイレクトでも、)2つ前のサイトを特定できる(abc.com/index.htmlにいたことを特定できる)場合もあるのでしょうか?ここが一番知りたいポイントでもあります。
よろしくおねがいします。
Re: 初心者
仕様に決められていないことに関して,どう振る舞うかは実装者に委ねられています。
それが問題のある振る舞いでないならば,実装ごとに振る舞いが異なっていてもそれは許容される範囲になります。
その許容される範囲も明文化されているものではないですから,実際には想定される範囲で調べるしか範囲を知る方法はありません。
想定される範囲を決めるのは提供者であるあなたですから,あなたが想定される範囲で調査する必要があります。
仕様上,300番台のStatus Codeによるリダイレクトを行った場合に,Refererの値として何を設定するか,私は仕様書の中で見つけられなかった,ということです。
これが正しいなら,300番台のStatus Codeを返したURIを参照していたURIかもしれないし,300番台のStatus Codeを返したURIかもしれないし,空かもしれない,ということです。
そして,仕様についてはすでに述べたとおりです。
現実的には,必ずしもUser Agentが仕様に全て沿うことは期待できないため,想定範囲のUser Agentに関して想定範囲のパターンについて調べることになります。
現実的には,
それが問題のある振る舞いでないならば,実装ごとに振る舞いが異なっていてもそれは許容される範囲になります。
その許容される範囲も明文化されているものではないですから,実際には想定される範囲で調べるしか範囲を知る方法はありません。
想定される範囲を決めるのは提供者であるあなたですから,あなたが想定される範囲で調査する必要があります。
オフトピック
そもそも,アクセス解析とありますが,どのようにアクセス解析を行っているのかもわかりませんし。
私の回答の中に,ユーザーの個人情報を守るための対策 さんが書きました:>>で,どのURIがReferer Fieldに設定されるかというと,サーバーから300番台のStatus Codeが返った場合,RefererにはOriginページが設定されるようです。
これは紹介して頂いたページ、「リファラ実験」の「Locationヘッダ→Locationヘッダ→リファラ表示」のことですか?
つまり、Locationヘッダで2回リダイレクトをした場合、リファラで2つ前のサイトを特定できる(abc.com/index.htmlにいたことを特定できる)場合もあるのでしょうか?
とあったのをちゃんと理解していますか。YuO さんが書きました:このあたりはRFCには記述がないようで,
仕様上,300番台のStatus Codeによるリダイレクトを行った場合に,Refererの値として何を設定するか,私は仕様書の中で見つけられなかった,ということです。
これが正しいなら,300番台のStatus Codeを返したURIを参照していたURIかもしれないし,300番台のStatus Codeを返したURIかもしれないし,空かもしれない,ということです。
知るならば,理論ではなく仕様です。ユーザーの個人情報を守るための対策 さんが書きました:>>実際に仮想マシンを使うなりして3台のサーバーを用意して,そこへの通信をブラウザのネットワークキャプチャ機能なり,Fiddlerなりで調べるのが手っ取り早いと思うのですが。
初心者なので専門的なことはできませんが、実際に自分のアクセス解析を用いて、簡単な実験はしてみようとは思っています。しかし、すべてンパターンやブラウザを網羅するのは無理なので、理論的なことを知りたいと考えています。
そして,仕様についてはすでに述べたとおりです。
現実的には,必ずしもUser Agentが仕様に全て沿うことは期待できないため,想定範囲のUser Agentに関して想定範囲のパターンについて調べることになります。
そのように実装したUser Agentがあれば可能でしょう。ユーザーの個人情報を守るための対策 さんが書きました:(Locationヘッダ以外のリダイレクトでも、)2つ前のサイトを特定できる(abc.com/index.htmlにいたことを特定できる)場合もあるのでしょうか?ここが一番知りたいポイントでもあります。
現実的には,
と書いたとおりですが。YuO さんが書きました:他の方法に関しては,上記のページとは異なり,現在ではだいたい空になるようです。
Re: 初心者
ありがとうございます。
結局、abc.com/index.html→efg.com/index.html→hij.com/index.htmlのようにリダイレクトして、リファラを「できる限り」消すには、以下の点を考慮して、どのような方法がベストだと思いますか?
・httpsは使えません。
・マニアックな方法すぎて動かないブラウザが多少あっても、「移動できない方は、こちらをクリックしてください」みたいなリンクを張るので問題ありません。
・できることなら簡単な方法がいいです。
・リファラを消すという目的では、サーバー側でのリダイレクトより、ブラウザ側でのリダイレクトのほうが良い気がしています。
・meta refreshが良い気がしていますが、古いブラウザが対応しているのか、対応状況を調べても、わかりませんでした。
301でリダイレクトかけるとブラウザがキャッシュするので怖い | infra.xyz
http://infra.xyz/archives/75
通常のリンクをリファラを送らないリンクに変える【JavaScript】 - Programming Magic
http://www.programming-magic.com/20080313015022/
Chromeで読み込みに失敗した画像についてリファラを消して再読み込みを試みる方法 - os0x.blog
http://os0x.hatenablog.com/entry/20100131/1264934725
インラインフレームにdataスキームでhtmlを挿入するとlocationがそのdataスキーム自身になり、そこからのリクエストにはリファラがつかない
以上の3つのサイトと以下の参考サイトを組み合わせればどうにかできる気がするのですが、技術に疎いため、よくわかりません。
何か良い方法はないでしょうか?
参考サイト
リファラ実験 - referrer test
http://www.teria.com/%7Ekoseki/memo/referrer/
HTML - Referrer を制御する - Qiita
http://qiita.com/wakaba@github/items/70 ... 2862cd8000
301でリダイレクトかけるとブラウザがキャッシュするので怖い | infra.xyz
http://infra.xyz/archives/75
通常のリンクをリファラを送らないリンクに変える【JavaScript】 - Programming Magic
http://www.programming-magic.com/20080313015022/
てくてく糸巻き
http://web.archive.org/web/200703150928 ... d=06100106
PHPでReferer(リファラー)を残さないリンクを作る | TAS design
http://blog.tasdesign.jp/web_design/201 ... ferer.html
リダイレクトを使ってリファラを隠す - それマグで!
http://takuya-1st.hatenablog.jp/entry/2013/05/26/222456
data:スキームでリファラを消して移動するブックマークレット - borbisの日記
http://d.hatena.ne.jp/borbis/20070409/p1
結局、abc.com/index.html→efg.com/index.html→hij.com/index.htmlのようにリダイレクトして、リファラを「できる限り」消すには、以下の点を考慮して、どのような方法がベストだと思いますか?
・httpsは使えません。
・マニアックな方法すぎて動かないブラウザが多少あっても、「移動できない方は、こちらをクリックしてください」みたいなリンクを張るので問題ありません。
・できることなら簡単な方法がいいです。
・リファラを消すという目的では、サーバー側でのリダイレクトより、ブラウザ側でのリダイレクトのほうが良い気がしています。
・meta refreshが良い気がしていますが、古いブラウザが対応しているのか、対応状況を調べても、わかりませんでした。
301でリダイレクトかけるとブラウザがキャッシュするので怖い | infra.xyz
http://infra.xyz/archives/75
通常のリンクをリファラを送らないリンクに変える【JavaScript】 - Programming Magic
http://www.programming-magic.com/20080313015022/
Chromeで読み込みに失敗した画像についてリファラを消して再読み込みを試みる方法 - os0x.blog
http://os0x.hatenablog.com/entry/20100131/1264934725
インラインフレームにdataスキームでhtmlを挿入するとlocationがそのdataスキーム自身になり、そこからのリクエストにはリファラがつかない
以上の3つのサイトと以下の参考サイトを組み合わせればどうにかできる気がするのですが、技術に疎いため、よくわかりません。
何か良い方法はないでしょうか?
参考サイト
リファラ実験 - referrer test
http://www.teria.com/%7Ekoseki/memo/referrer/
HTML - Referrer を制御する - Qiita
http://qiita.com/wakaba@github/items/70 ... 2862cd8000
301でリダイレクトかけるとブラウザがキャッシュするので怖い | infra.xyz
http://infra.xyz/archives/75
通常のリンクをリファラを送らないリンクに変える【JavaScript】 - Programming Magic
http://www.programming-magic.com/20080313015022/
てくてく糸巻き
http://web.archive.org/web/200703150928 ... d=06100106
PHPでReferer(リファラー)を残さないリンクを作る | TAS design
http://blog.tasdesign.jp/web_design/201 ... ferer.html
リダイレクトを使ってリファラを隠す - それマグで!
http://takuya-1st.hatenablog.jp/entry/2013/05/26/222456
data:スキームでリファラを消して移動するブックマークレット - borbisの日記
http://d.hatena.ne.jp/borbis/20070409/p1