リダイレクタの存在は脆弱性か?@高木浩光さん@自宅の日記
http://takagi-hiromitsu.jp/diary/20051205.html#t
いつもなるほどなぁ、と思いながら読んでいるわけですが...
例えば、リンクがクリックされた時に記録 (ログ) を取りたいだけの場合、リンク先がサイト内にどれだけあるか、そのサイトにどのくらいのトラフィックがあって、どのくらいリダイレクタが叩かれるかにもよるが、例えばそこそこレベルのアクセスのサイトで、リダイレクタ経由対象となっているリンクが100くらいであれば、リダイレクタに渡されたURIをDBと照合してチェックするくらいのことは簡単にできるのではないだろうか?
まず、本当に「設定」で回避することができるのか。リダイレクタの大半は、 任意のサイトへのリダイレクトを目的としている。その場合、このような悪用 をされないようにするには、Refererをチェックするしかない。Refererが空の 場合は、機能しないようにする必要があるので、Refererの送出を止める設定 のブラウザを使用している閲覧者は、そのリダイレクタ経由でのリンクを使えなくなってしまう。
# 「あれ??」と思ったので覚悟して (!?) 反応してみた。
確かに「Referer」なんぞあてにならんから、明らかに違うドメインからのRefererが来たら弾いてもいいけど、あくまでも基本 (本質) は「リダイレクタに渡されたURLが本当にそのサイト内で設定されたリンクかどうかをチェックすること」だと思う。
トラフィックとかサーバー負荷の点でそれが叶わないならば、それこそ、その時にはじめて
だが、本当にリダイレクタが必要な場合はどうすればよいだろうか。
あたりを議論すれば良いのではないだろうか。
# 大抵の場合、それは要らないのだと思う。

Referer にセッション情報等が含まれるのを防ぐためにリダイレクタを使う場合は確かにあるかもしれない。そのような実装がありかどうかは別にして(ケースにょってはまずかろう)。
その場合は、
> Refererをチェックするしかない。Refererが空の 場合は、機能しないようにする必要があるので、
逆に、Refererが空の場合はスルーさせればよいが、どこかでチェックしなければならないから同じことか。