LoginSignup
1
0

More than 3 years have passed since last update.

セッションとクッキーの違い

Posted at

ブラウザにおける情報の一時記憶

「昨日ログインしたサービスを今日も利用しようとしたら、自動的にログインの状態になっていた」という経験があるかと思います。

TwitterやこのQiitaもその機能が搭載されている
その都度ログインを行わなくて良いので便利

この機能が実現できるのは、セッションクッキーという仕組みのおかげ
Webアプリケーションの使い勝手が良くなるため多くのサービスで使用されている

ゴリゴリのSPが出入り口にいて色々手続きをしないと入場できない施設が常連になると顔パスで素通り出来る様になる感じ?

セッションとは

Webサービスにおいて情報を一時的にDBに記憶しておく仕組み

ショッピングサイトにログインしていると「お買い物カゴ」などに商品を追加でき、その状態を維持できるようになっている

ユーザーの情報やお買い物カゴの情報を一時的に保存し、初回のログイン以降も保持することで、一度ショッピングサイトのページを離れても、再度アクセスした時にログインの状態やお買い物カゴの情報を維持したままショッピングが再開できる仕組みが実装されている

この仕組みにより、何度もログインする必要がなくなる

session

Ruby on Railsでセッションを使用する際に使うオブジェクト
コントローラーで使用することが出来る

◯◯s_controller.rb
class ◯◯sController < ApplicationController
 def index
  session[:sample] = 1
 end
end
  • sessionというハッシュに値を追加するような記述で使用
  • ユーザー情報を保持したい場合などに用いると便利
  • deviseというGemで実装すると自動でセッションを利用できる
    • 内部の処理でセッションを利用してログイン機能を実現しています。

クッキーとは

ブラウザが持っている、データを保存できる領域のこと
ブラウザにあるセッションの情報の保存場所のことをクッキー
Webサービスにおいて情報を一時的にブラウザに記憶しておく仕組み

「Google Chrome」にも導入されている
Ruby on Railsにも、セッションの保存先がある

CookieStore

  • Ruby on Railsでセッションを用いる際の、デフォルトの保存先
  • セッションストレージと呼ぶことが一般的

セッションはCookieStoreにハッシュ形式で保存される
session[:sample]という記述は、

◯◯s_controller.rb
class ◯◯sController < ApplicationController
 def index
  session[:sample] = 1
 end
end

ハッシュと同じ記法でしたが、これがその理由です。

セッションは悪意のあるユーザーが利用すると非常に厄介な項目
ユーザー情報をセッションを用いて一時的に保存していたら、その情報が盗まれて悪用されてしまう可能性がある
そうならないために、CookieStoreはセッションの情報を暗号化したり、また定期的にリセットしたりすることで対策を行っている

1
0
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
1
0