railsのsessionの値の保存先

railsのsessionの値は暗号化されているということなので、どこに保存されているのか気になっておりました。

なぜなら、これがバレてしまえば、アカウントハックの可能性が生まれるからです。

sessionについて

railsのsessionはcookieを暗号化して保存しています。

保存先がこちらになります(違ったら教えてください)

ここのSet-Cookieの値です。

これはレスポンスヘッダーの状態管理のためのCookie情報です。

https://gyazo.com/b312a6de8067300e027c1ef545879367

cookieなので、第三者にバレる可能性はあるのですが、その値から逆算して元の値をはじき出すのは至難の技になっています。

ちなみにcookie以外の保存先としては、ActiveRecordStoreというgemを使用して、データベースにsessionを保存させる方法もあります。

GitHub - rails/activerecord-session_store: Active Record's Session Store extracted from Rails

セキュリティ上の注意点です。

アプリ作成だと、ログアウト時にsessionの値を削除しない人もいるので、そこを狙われてセッションハイジャックという手法でアカウントハックされることもあります。

sessionの値が変更されないと、どんなにセキュリティを高めたところで、バレたら固定値と同じなので、アカウントハックができるという話です。

なので、sessionの値はログアウトした場合、きちんと削除することが重要になってきます。

簡単ですが、これで説明を終わります。

もう一回まとめて、文章にしたい・・・