セッションストアに関してメモ

最近、RoR(Ruby on Rails)を勉強しています。

RoRでセッションデータはデフォルトでブラウザのクッキーに保存されます。
最初はServletのようにセッションIDだけ、ブラウザに送られて、実際のデータはサーバのメモリに保存されると思いました。

しかし、そうではなく、セッションに入れたすべてのデータがブラウザのクッキーに保存されるのでした。
これはまずいんじゃない?と思いました。
なぜなら、たとえ、クッキーのセッションデータが暗号化されていても理論的には復号化できるので、
セキュリティ上、安全ではないからです。

幸い、RoRではセッションストアを変更できます。
セッションデータをDBはもちろんのこと、Redisやmemcachedなどのキャッシュサーバに保存することも可能です。

RoRで本格的にウェブアプリケーションを開発する時にはセッションストアをクッキー以外に変更しましょう。
以下のgemはセッションデータをDBに保存します。
github.com

以下はredisです。
github.com

最後にmemcachedです。
github.com


どのセッションストアもセッションデータを一つのAPサーバのメモリでなく、クッキーやDBなどの共有ストレージに保存するとの共通点がありますね。
こうなると、APサーバの冗長化時にセッションを同期するためにクッキーにサーバのIDを送るとか、セッションレプリケーションなどを行う必要がないから、便利だと思います。