印刷用表示へ切り替え 通常表示へ切り替え 更新履歴を表示 更新履歴を隠す
MovableType イントラサイトの URL を内緒にしたい

イントラサイトの URL がリファラで外部に送出されてしまうのを何とかしたい。今回は企画の話のみ。

■ ■ ■

はじめに

これは,先日の Movable Type Hackathon で取り組んだ企画である (nlog(n): おかげさまで4周年 - Movable Type Hackathon に参加)。当日のタイトルは「プライベートサイトの URL を内緒にしたい」だったが,ここでは「イントラサイト」に変更した。「プライベートサイト」というのを検索してみると,「公の仕事をしている人の私的なサイト」であることが多かったからである。この企画と実装について Hackathon で発表したところ,シックスアパートでも同じ案件があって,すでに実装されているとのこと。実際に行っている企業は多いのかも知れない。

背景

会社や組織の多くは,外部からアクセスさせない Web サーバをイントラネット内に持っている。そのサーバを,ここではイントラサイトと呼ぶことにする。イントラサイトから外部へのリンクがある場合,Web ブラウザのリファラによって,リンク元の URL が外部に漏れてしまう。

リファラの漏洩
リファラの漏洩


リファラの機能は,Web のシステムにおいては非常に重要な役割を果たしているが,イントラサイトに限っては,嬉しくない機能である。「漏れる」と言っても,リンク元が漏れるのはデータが漏れるのとは違うので,致命的な問題にはならない。しかし,http://.../kuso.html からリンクしているのがバレる…というのは嬉しくない。その程度である。

インターネットにはリンク元を公開しているサイトもあるため,アクセス先のサーバ管理者だけでなく,多くの第3者が知る可能性もある。ブラウザにセキュリティホールがある場合は,悪用されるとプライバシー漏曳や社内情報の流出につながる恐れがある ([JavaHouse-Brewers:33024] 任意のホストに接続できてし まうセキュリティ上の欠陥がもたら す危険性)。

要件設定

前提と要望は次であると設定する。

  • (前提) イントラサイトは Movable Type で構築されている
  • (要望) イントラサイトの URL をリファラによって外部に流したくない

対策案

いくつかの対策が考えられる。以下では4つの対策案と特徴をあげる。ちゃんとやるなら,メリット・デメリットをマトリックスにして○×をつけていくのだろう。

  1. イントラサイトには,リンクを張らないようにする (URL をテキストで貼り付ける)
    • 投稿者全員に周知する必要がある
    • URL をコピー&ペーストしなければならないため,使いにくい
  2. すべてのブラウザを,リファラを送出しないように設定する
    • すべてのブラウザをチェックするのは不可能 (しかも一見しただけでは分からない)
    • リファラを送出しないと画像を表示しないサイトがある
  3. サイト内のすべてのページに JavaScript を仕込んでリファラを送出しないようにする
    • ブラウザによって動作が異なる
  4. 外部に教えていいサイトにリダイレクト CGI を設置し,一旦これを経由する
    • ブラウザの種類や設定に関わらず有効

Referer リクエストヘッダの除去には,リファラ送出における問題点と,リファラを削除するためのブラウザの設定方法やプロクシ設定の具体的な方法がまとめられている。しかし,ここでやりたいことは,リファラを全て削除したいということではないので,目的が違う。削除したいのはイントラ内のリファラであり,外部のリファラは削除しなくてもよいからである。

リファラをつけないと,画像が表示されないサイトもある (ITmedia 等)。画像部分に枠だけしか表示されなかったりするのでコチンとくる。画像を見たいときは別のブラウザを使ったりしなければならず,不便である。

実装

中継することでリファラ送出を抑止する
中継することでリファラ送出を抑止する


最後の案を採用する。動作は上のようになる。リダイレクト CGI を設置したサイト B を経由させる。B は自分で管理しているサーバである。A のリファラは B に送られ,C には届かない。B のリファラは C に送られてもよい。実装するのは次の2つである。

  • リダイレクタ (リダイレクト CGI)
  • リンク先をリダイレクタ経由に変更する Movable Type プラグイン

それぞれの実装については,また後日。

2008年2月14日追記:
リダイレクタについて書きました (nlog(n): リファラの送出を防止するリダイレクト CGI)。

2008年2月20日追記:
Movable Type プラグインを書きました (nlog(n): リダイレクタ追加プラグイン 0.10)。

2008年5月2日追記:
ダイナミックパブリッシングに対応しました (nlog(n): リダイレクタ追加プラグイン 0.12.1)。

Posted by n at 2008-02-13 00:34 | Edit | Comments (0) | Trackback(0)
Trackbacks

  • 「手違いで複数トラックバックを送ってしまった!」という場合でも気にしないでください (重複分はこちらで勝手に削除させていただきます)
  • タイムアウトエラーは,こちらのサーバの処理能力不足が原因です (詳細は トラックバック送信時のエラー をご覧ください)
  • トラックバックする記事には,この記事へのリンクを含めてください(詳細は 迷惑トラックバック対策 をご覧ください)
Comments
Post a comment
  • 電子メールアドレスは必須ですが,表示されません (気になる場合は「メールアドレスのような」文字列でもOKです)
  • URL を入力した場合はリンクが張られます
  • コメント欄内ではタグは使えません
  • コメント欄内に URL を記入した場合は自動的にリンクに変換されます
  • コメント欄内の改行はそのまま改行となります
  • 「Confirmation Code」に表示されている数字を入力してください (迷惑コメント対策です)


(必須, 表示されます)


(必須, 表示されません)


(任意, リンクされます)


Confirmation Code (必須)


Remember info (R)?