イントラサイトの URL がリファラで外部に送出されてしまうのを何とかしたい。今回は企画の話のみ。
これは,先日の Movable Type Hackathon で取り組んだ企画である (nlog(n): おかげさまで4周年 - Movable Type Hackathon に参加)。当日のタイトルは「プライベートサイトの URL を内緒にしたい」だったが,ここでは「イントラサイト」に変更した。「プライベートサイト」というのを検索してみると,「公の仕事をしている人の私的なサイト」であることが多かったからである。この企画と実装について Hackathon で発表したところ,シックスアパートでも同じ案件があって,すでに実装されているとのこと。実際に行っている企業は多いのかも知れない。
会社や組織の多くは,外部からアクセスさせない Web サーバをイントラネット内に持っている。そのサーバを,ここではイントラサイトと呼ぶことにする。イントラサイトから外部へのリンクがある場合,Web ブラウザのリファラによって,リンク元の URL が外部に漏れてしまう。
リファラの機能は,Web のシステムにおいては非常に重要な役割を果たしているが,イントラサイトに限っては,嬉しくない機能である。「漏れる」と言っても,リンク元が漏れるのはデータが漏れるのとは違うので,致命的な問題にはならない。しかし,http://.../kuso.html からリンクしているのがバレる…というのは嬉しくない。その程度である。
インターネットにはリンク元を公開しているサイトもあるため,アクセス先のサーバ管理者だけでなく,多くの第3者が知る可能性もある。ブラウザにセキュリティホールがある場合は,悪用されるとプライバシー漏曳や社内情報の流出につながる恐れがある ([JavaHouse-Brewers:33024] 任意のホストに接続できてし まうセキュリティ上の欠陥がもたら す危険性)。
前提と要望は次であると設定する。
いくつかの対策が考えられる。以下では4つの対策案と特徴をあげる。ちゃんとやるなら,メリット・デメリットをマトリックスにして○×をつけていくのだろう。
Referer リクエストヘッダの除去には,リファラ送出における問題点と,リファラを削除するためのブラウザの設定方法やプロクシ設定の具体的な方法がまとめられている。しかし,ここでやりたいことは,リファラを全て削除したいということではないので,目的が違う。削除したいのはイントラ内のリファラであり,外部のリファラは削除しなくてもよいからである。
リファラをつけないと,画像が表示されないサイトもある (ITmedia 等)。画像部分に枠だけしか表示されなかったりするのでコチンとくる。画像を見たいときは別のブラウザを使ったりしなければならず,不便である。
最後の案を採用する。動作は上のようになる。リダイレクト CGI を設置したサイト B を経由させる。B は自分で管理しているサーバである。A のリファラは B に送られ,C には届かない。B のリファラは C に送られてもよい。実装するのは次の2つである。
それぞれの実装については,また後日。
2008年2月14日追記:
リダイレクタについて書きました (nlog(n): リファラの送出を防止するリダイレクト CGI)。
2008年2月20日追記:
Movable Type プラグインを書きました (nlog(n): リダイレクタ追加プラグイン 0.10)。
2008年5月2日追記:
ダイナミックパブリッシングに対応しました (nlog(n): リダイレクタ追加プラグイン 0.12.1)。
Master Archive Index
Total Entry Count: 1957