リファラを隠したいならJavaScript にも気をつけましょう

Squid のsquid.conf ででreferer を送らない設定にしていたとしても、JavaScript でreferer を取得されているかもしれませんよ、というお話。
そもそも、JavaScript でreferer を取得するのは技術的に可能なわけで、いくらSquid でreferer 隠蔽をしていたとしても、それが完璧とは限らないのです。ということを気づかせてくれた「はてなカウンター」 を題材に、この件を説明したいと思います。別に「はてなはJavaScript を使ってユーザ情報をこっそり収集している」 とか、そういう主張をしたいわけではありません。
さてさて、ウチでは「Fedora のSquid SRPM からRHL9 用RPM を作る」 で書いたように、特定のURL(内部の伏せておきたいページとか) からのreferer を送らないような設定をしています。
また、はてなダイアリーでは有料オプションを利用していて、はてなカウンターも使っているのですが、ふとそのログをよく見てみたところ、送らないようにしているはずのreferer が「リンク元」 にしっかりはっきり記録されちゃってますよ!! えーなんで!?
というわけで色々squid.conf いじったり確認してみたりしてたどり着いた結論が、「(少なくともはてなカウンターでは) JavaScript でもreferer を取得している」 ということ。JavaScript 切ったらリンク元も空欄になりました。
その後色々検証してみたところ、リンク元のページでJavaScript がオンかオフかというのは関係なく、はてなのページに飛ぶ際にJavaScript をオフにすることでreferer の取得を回避することが出来るようです。
この件についてはてなカウンターのヘルプとかに何か書いてないかな、と見てみたけど特に記述はない模様。