デフォルトのセッションストレージ
RailsはデフォルトのセッションストレージとしてActionDispatch::Session::CookieStoreを用います。
デフォルトでcookieを使うのようになっているのか
cookiestoreの特徴
セッションハッシュ使ってcookieを使っている
RailsのCookieStoreは
クライアント側のcookieにセッションハッシュを保存
します。サーバーはこのセッションハッシュをcookieから取得することで、セッションIDを必要としなくなります
。こうすることで、アプリケーションのスピードは大幅に向上しますが、このストレージオプションについては賛否両論があるため、セキュリティ上の意味やストレージでの制約について以下の点を十分考えておかなければなりません。
容量
cookieの
上限は4KB
です。cookieはセッションに関連するデータを保存する目的にのみお使いください。
目的外の物は保存しない
Cookieが盗聴される可能性
cookieは
クライアント側に保存
されます。クライアントでは、失効したcookieにも内容が残っている
ことがあります。また、クライアントのcookieが他のコンピュータにコピーされる可能性
もあります。セキュリティ上重要なデータをcookieに保存することは避けてください
。
...
セッションcookieが自分自身を無効にすることはないので、悪用目的で使い回される可能性
もあります。保存済みのタイムスタンプを利用して古いセッションcookieをアプリケーションで失効させるとよいでしょう。
一時的な情報だけcookieを使う
cookieは本質的に一時的な情報です。サーバーはcookieに期限を設定できますが、期限が切れる前にcookieやcookieの内容がクライアント側で削除される可能性があります。
恒常性の高いデータは、すべてサーバー側で永続化
してください。
デフォルトで暗号化されてる
Railsはcookieを
デフォルトで暗号化
します。クライアントは暗号を解読しないかぎりcookieの内容を読み取ることも編集することもできません。秘密情報を適切に扱っていれば、cookieのセキュリティは一般的に保たれていると考えてよいでしょう。CookieStoreは、
セッションデータの保管場所を暗号化して安全にするためにencrypted cookie jarを利用します
。これにより、cookieベースのセッションの内容の一貫性と機密性を同時に保ちます
。暗号化鍵は、signed cookieに用いられる検証鍵と同様に、secret_key_base設定値から導出
されます。