Redmineの外部リンクからReferrer情報を削除する方法

リンク先にリファラー情報が丸見え!

Redmineでプロジェクトの開発・運用情報を管理していると、Wikiやチケットに外部サイトを掲載することがありますが、リンク先の相手にあなたのRedmineのURLが丸わかりってご存知でしたか?

なんで秘密なはずのウチのRedmineにアクセスがあるんだ?」と思われるでしょうが、いやいや、アクセス先のWEBサーバーのログに記録されたリファラー(Referrer)情報を見れば以下のような感じで一発でわかります。

XXX.XXX.XXX.XXX - - [17/Feb/2017:12:44:17 +0900] "GET / HTTP/1.1" 200 81454 "https://redmine.example.com/issues/100?issue_count=1&issue_position=1&next_issue_id=101" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:51.0) Gecko/20100101 Firefox/51.0"

ほうほう…『https://redmine.example.com』のRedmineのチケット100番にウチのトップページにリンクが貼られてるのね。」という具合です。

実際、Redmineで外部リンクを貼ると、以下のようなHTMLコードで変換されます。

textile “colori”:https://colo-ri.jp
HTMLコード <a href=”https://colo-ri.jp” class=”external”>coloriトップページ</a>

「class=”external”」が付加されるだけで特に何か処理がされるようなところはありません。

直接外部サイトURLを貼った場合は?
直接URLを記載した場合も同じく「class=”external”」が付加されるだけです。

リファラーが見えると何がまずいのか?

直接それが脅威となることは少ないですが、以下のようなことは推測されます。

  • リファラー元のURLを逆探知して403(Forbidden)やベーシック認証等でアクセスできないページであれば、そこに秘密の情報がワンサカあるのでは…と思われて攻撃対象にされてしまう。
  • リファラー元が特定のライバル企業からのアクセスであれば、IPアドレスごと拒否されてアクセスできなくされてしまう。

こう考えるとメリットはほとんど無いので、知られないに越したことはないですね。

METAタグの追加で防げる

こういったリンク元情報(Referrer)を削除して相手先に伝わらないようにするには結構簡単で、以下のように<meta>タグを<head>タグ内に追加します。

<meta name="referrer" content="no-referrer">

view-customizeプラグインを利用

で、これをRedmineで埋め込むために、view-customizeプラグインを導入します。

このプラグインは正規表現でURLを指定してCSSやJavaScript(jQuery)コードを埋め込むことができます。
めちゃくちゃ便利なプラグインなので、Redmineを利用するならぜひ導入しましょう。

Referrerを渡さないjQueryコード設定

view-customizeプラグインをインストールできたら、「管理」→「view customize」→「New view customize」と進んで以下の設定を追加してください。

Path pattern .*
Code
$(function(){
    var meta_no_referrer = '<meta name="referrer" content="no-referrer">';
    $(meta_no_referrer).appendTo('head');
});

これで、全ページでReferrer情報が渡らないようになります。

XXX.XXX.XXX.XXX - - [17/Feb/2017:12:52:30 +0900] "GET / HTTP/1.1" 200 77485 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:51.0) Gecko/20100101 Firefox/51.0"

お役に立ちましたか?
他にも便利なノウハウがあればぜひコメント欄で共有しましょう。

このページをシェアする

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

2017-02-18