2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ブラウザのセッションとCookieの違いとRailsのsession,cookiesメソッドの違いについて

Last updated at Posted at 2021-01-18

はじめに

この記事はRails初学者が書いています。
ご容赦ください。

また、間違っている点があれば指摘していただければ幸いです。

それぞれの違い

ブラウザのセッション

あるサイトに接続してから切断するまでの一連の流れのこと。

ブラウザのCookie

ユーザー側のブラウザに保存しておく情報のこと。

一時Cookieと永続Cookieがある。
前者はブラウザ終了時に自動で消える。
後者はユーザー側、サーバー側のどちらかで手動で消去するまで残っている。

HTTPプロトコルではログインしているという情報を記憶しておくことができない。
そのため、こういった機能で保存しておき、ページ移動の際に毎回Cookieを確認する必要がある。

Railsのsessionメソッド

ブラウザの一回のセッションに必要なデータを残しておくためのもの。
具体的には、ブラウザの一時Cookieに暗号化したデータを保存するメソッド

Railsチュートリアルでは、ここにログインしているユーザーIDを保存している。
ユーザーIDを保存しておくことでブラウザを閉じるまではログイン後のページを移動することができる。

チュートリアルには、「このデータは攻撃者に盗まれたとしてもログインすることはできないから安全である。」と書いてあるが、
ログイン中であるという情報は残っているので、これを盗めばユーザーになりすますことができるのではないか思う。
僕の勉強不足でここはわからない。

Railsのcookiesメソッド

ブラウザ終了後にも残しておきたいデータを保存しておくためのもの。
具体的には、ブラウザの永続Cookieに、暗号化したデータを保存するメソッド

チュートリアルでは、RememberMeと呼ばれるトークンを保存している。
これを使うと、ユーザー名とパスワードを入力しなくてもログインすることができてしまう。
そのため、扱いには注意する必要がある。

参照

今さら聞けないセッションとCookie、ログイン・ログアウト(Rails編)
Rails セキュリティガイド

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?