初心者

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ユーザーの個人情報を守るための対策

初心者

#1

投稿記事 by ユーザーの個人情報を守るための対策 » 4年前

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のように、すべて同じ場合は、特定される可能性が上がるでしょうか?

よろしくおねがいします。

YuO
記事: 941
登録日時: 9年前
住所: 東京都世田谷区

Re: 初心者

#2

投稿記事 by YuO » 4年前

リファラというのは,HTTPにおけるReferer Header Fieldのことでしょうか。
であれば,RFC 7231 Hypertext Transfer Protocol (HTTP/1.1): Semantics and Contentによると,
Referer = absolute-URI / partial-URI
とのことなので,Referer Header FIeldにはひとつのURIしか指定できません。

で,どのURIがReferer Fieldに設定されるかというと,サーバーから300番台のStatus Codeが返った場合,RefererにはOriginページが設定されるようです。
このあたりはRFCには記述がないようで,リファラ実験などの先人の調査によるものです。
オフトピック
そもそもRFCに「redirection」の定義がないように思える
他の方法に関しては,上記のページとは異なり,現在ではだいたい空になるようです。


実際に仮想マシンを使うなりして3台のサーバーを用意して,そこへの通信をブラウザのネットワークキャプチャ機能なり,Fiddlerなりで調べるのが手っ取り早いと思うのですが。

ユーザーの個人情報を守るための対策

Re: 初心者

#3

投稿記事 by ユーザーの個人情報を守るための対策 » 4年前

ありがとうございます。

ユーザー名:と件名:を逆にしてしまいましたが、今から変更するのもややこしいので、最初のまま投稿させて頂きます。



>>で,どの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にいたことを特定できる)場合もあるのでしょうか?ここが一番知りたいポイントでもあります。


よろしくおねがいします。

YuO
記事: 941
登録日時: 9年前
住所: 東京都世田谷区

Re: 初心者

#4

投稿記事 by YuO » 4年前

仕様に決められていないことに関して,どう振る舞うかは実装者に委ねられています。
それが問題のある振る舞いでないならば,実装ごとに振る舞いが異なっていてもそれは許容される範囲になります。
その許容される範囲も明文化されているものではないですから,実際には想定される範囲で調べるしか範囲を知る方法はありません。
想定される範囲を決めるのは提供者であるあなたですから,あなたが想定される範囲で調査する必要があります。
オフトピック
そもそも,アクセス解析とありますが,どのようにアクセス解析を行っているのかもわかりませんし。
ユーザーの個人情報を守るための対策 さんが書きました:>>で,どの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に関して想定範囲のパターンについて調べることになります。
ユーザーの個人情報を守るための対策 さんが書きました:(Locationヘッダ以外のリダイレクトでも、)2つ前のサイトを特定できる(abc.com/index.htmlにいたことを特定できる)場合もあるのでしょうか?ここが一番知りたいポイントでもあります。
そのように実装したUser Agentがあれば可能でしょう。
現実的には,
YuO さんが書きました:他の方法に関しては,上記のページとは異なり,現在ではだいたい空になるようです。
と書いたとおりですが。

ユーザーの個人情報を守るための対策

Re: 初心者

#5

投稿記事 by ユーザーの個人情報を守るための対策 » 4年前

ありがとうございます。

結局、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

ユーザーの個人情報を守るための対策

Re: 初心者

#6

投稿記事 by ユーザーの個人情報を守るための対策 » 4年前

とりあえず解決したので終了します。

ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る