はじめに
この記事はRails初学者が書いています。
ご容赦ください。
また、間違っている点があれば指摘していただければ幸いです。
それぞれの違い
ブラウザのセッション
あるサイトに接続してから切断するまでの一連の流れのこと。
ブラウザのCookie
ユーザー側のブラウザに保存しておく情報のこと。
一時Cookieと永続Cookieがある。
前者はブラウザ終了時に自動で消える。
後者はユーザー側、サーバー側のどちらかで手動で消去するまで残っている。
HTTPプロトコルではログインしているという情報を記憶しておくことができない。
そのため、こういった機能で保存しておき、ページ移動の際に毎回Cookieを確認する必要がある。
Railsのsessionメソッド
ブラウザの一回のセッションに必要なデータを残しておくためのもの。
具体的には、ブラウザの一時Cookieに暗号化したデータを保存するメソッド
Railsチュートリアルでは、ここにログインしているユーザーIDを保存している。
ユーザーIDを保存しておくことでブラウザを閉じるまではログイン後のページを移動することができる。
チュートリアルには、「このデータは攻撃者に盗まれたとしてもログインすることはできないから安全である。」と書いてあるが、
ログイン中であるという情報は残っているので、これを盗めばユーザーになりすますことができるのではないか思う。
僕の勉強不足でここはわからない。
Railsのcookiesメソッド
ブラウザ終了後にも残しておきたいデータを保存しておくためのもの。
具体的には、ブラウザの永続Cookieに、暗号化したデータを保存するメソッド
チュートリアルでは、RememberMeと呼ばれるトークンを保存している。
これを使うと、ユーザー名とパスワードを入力しなくてもログインすることができてしまう。
そのため、扱いには注意する必要がある。