Wednesday, September 20, 2006

セッションID を URL に含めると、Referer ヘッダで外部に漏れてしまう件

Web アプリケーションのセッション管理に使うセッションID を Cookie ではなく、URL に埋め込んでいる場合、HTTP リクエストヘッダの Referer でそれが外部に漏れてしまう危険がある。

Web ページ A があり、そこに Web ページ B へのリンクが張られているとする。このとき、ブラウザで B へのリンクをクリックすると、ページ A の URL が Referer ヘッダでページ B の Web サーバへと送られてしまう。したがって、A の URL にセッションID が埋め込まれていて、ページ A と B の管理者が異なっている場合は、セッションID が外部に漏れてしまうということになる。

ちなみに、J2EE の HttpServletResponse#encodeURL メソッドで指定された URL にセッションID を埋め込むとき、指定された URL が自ドメインでないなら、セッションID を埋め込むことをしない。もちろん、これは、上の Referer ヘッダによるセッションID 漏洩を防ぐものではない。

リンクでないなら、Referer ヘッダが送られることはないが、ブラウザのバグで Referer が送られてしまうこともあるらしい。

以上より、セッションID を URL に埋め込むのはなるべく避けた方がいい。


http://www.studyinghttp.net/header#Referer
http://securit.gtrc.aist.go.jp/SecurIT/advisory/webmail-1/
http://securit.gtrc.aist.go.jp/SecurIT/advisory/referer-2/

No comments: