サーバーサイドでのセッション管理はセキュリティを向上させたり、通信で無用なCookieを送らない等の意味でメリットがあります。
今回は『redis-store/redis-rails - GitHub』を使う手順のメモです!
サーバーサイド/クライアントでのセッション管理のPros/Cons
セッションに関する説明は以下のサイトがおすすめです。注意点としては次の2点と考えられます。
- セッションの基礎 - Webアプリでは、接続ごとに固有の識別子(セッションID)を割り当て、一時的なidを割り振る - セッションは他のCookieと合わせて通信のたびにやり取りされる - Cookieのサイズは4 KBと厳密に定められている - セッションにおけるセキュリティのリスク - 他人のセッションを取得すると他人に一時的になりすましてログインができてしまう - セッション/Cookieにデータを保持するとクライアント側でデータを復元出来てしまう - サーバーサイドでセッションを管理するメリット - 通信時にやりとりされるCookieの通信量を減らす - Rails固有の話 - Railsではセッションidは、32バイトのMD5ハッシュ値である - セキュリティ強度を上げるための対策 - Cookieのsecure属性とSSL => HTTPSでの通信でのみ使い、暗号化 - Cookieのhttponly属性 => JavaScriptから読み書きさせない
開発環境の準備
Mac等でのRedisの導入については、拙著 『CentOS/Mac OSXへのRedis導入手順 - memcacheライクなKey-Value方式と、永続化対応のインメモリDB』 がおすすめです。
Gemインストール
Gemfileに以下を追加して、bundle install
を実行。
1 2 |
|
設定の修正
まずはキャッシュの保存先をRedisに設定。
1 2 3 4 5 6 |
|
続いてバックエンドのセッションの保存先を設定。
1 2 3 4 5 |
|