session(cookie)とtokenについてまとめてみた。

この記事は内容理解の為に自分の考え含めて執筆しております。

何か間違え等あればご指摘ください。

概要

はい~、色々触っていたらsessionとかcookieとか色々出てきてややこしいことないですか?

そう、今回はsessionとかtokenとかcookieとか何ぞやっていうのを説明していきます!

web開発を行う上では非常に大切な知識となっていますのでここでまとめていきたいと思います~

この記事で伝えたいこと

  • sessionとは何かを大枠でも理解する。
  • tokenとは何かを大枠でも理解する。
  • sessionとcookieの関係を大枠でも理解する。

今回解決したい課題

今回はsessionとtokenについてあまりわからない人に対して、

大枠でも良いのでどんなものかというのを理解してもらうことが目的です。

もっと詳しく知りたいんだよ。専門的にもっと教えろ~
っていう方は技術書のご購読よろしくお願いいたします。

ではいってみましょ~う

session(cookie)とtokenの大きな違い

Cookie(Session)での認証とTokenでの認証の違いについて
超超簡単にまとめてみると、、、

session=ユーザの状態を管理する。
token=ユーザの状態を管理しない。

ではもう少し、いや、もっと詳しく調べてみよう。結構調べたら沼に陥ってしまう…
次から次へと気になることが増えていく。

が、まとめてみましょう~

sessionとは

Cookieを元にできている仕組みのことらしい。。。←知らなかった。

HTTPプロトコルはステートレスなプロトコル何です。それで状態を持ちたいんだーって時にsessionを使うわけですね。

よって、sessionの特徴としてはstatefullができること。そう!状態の管理ができるんです!

状態の維持が必要な時に利用される。買い物とか、状態の維持が必要な際に利用する。
サーバー側に情報の保存が可能となっています。

ログイン情報や、ユーザに紐づく情報をサーバー側に一定期間保持しておくことができるんです。
ただ、毎回DBに接続を行うので負荷がたくさんかかるようですね。

クライアントが鍵を持っていて、webサーバ―側にたくさんの情報を持ったものが入っているというイメージですかね。

sessionを使った場合…↓

webサーバ: 「cookieファイル送っとくわ。これ見てあんたの情報を色々保存させてもらうから大切にしてな」(SeesionIDの発行)
クライアント: 「へいよ~ SessionID見せるからわいの情報見せてな」(リクエストヘッダにCookieに含めて送る。)
webサーバ: 「ほいほい、今〇〇してくれてるクライアントさんやね。了解やデー。色々データ残してるからそれを参照させてもろたわ」 (session情報の参照)

ちなみにLaravelのセッション管理はこんな感じになっているらしい↓

Qiitaより: 【PHP】Laravelのセッション管理を勉強する

sessionとcookieは何が違うんだー!!!

そもそも違うとかではない…
sessionとcookieはセットとして扱われるものなのだ。

session=webサーバーが保持する
cookie=ブラウザが保持する

  • cookie
    webサーバが発行してブラウザが保持するkey:valueのこと
    ↓で確認が可能
    「デベロッパーツール→Application→Strage→Cookies」

サーバー側はユーザーがログインしたタイミングでsession IDをcookieに格納してブラウザに返します。

  • session
    webサーバが保持するkey:valueのこと

毎回パスワードとかの大切な情報を送りあっていたらセキュリティ的によくないので、
変わりにsessionとcookieを使ってうまく通信をしている。

cookieとsession cookieとか似たものはやめてほしいが意味を調べてみた。

cookieはブラウザでファイルとして保持されているが、
session cookieはメモリーに保持されているので、ブラウザを閉じたら破棄される。

Web Storage

クライアント側にデータを記録するための仕組み。
cookieも同じような使われ方をするけど、Web Storageはより高機能らしい。

簡単に大きいデータをあつかえるらしい。

ちなみにcookieは有効期限はあるけども、ブラウザを閉じても無くならない。

調べたら調べるほど色々出てくるなああああ…ちなみにweb storageは以下から確認が可能

「デベロッパーツール→Application→Strage→Local Storage, Session Storage」

tokenとは

セキュリティーtokenとは

webサーバはtokenを保存しません。
なので基本的に、クライアント側が持っていてwebサーバはリクエストの検証作業だけを行います。

クライアントがログインを成功させると…↓

webサーバ: 「token渡すで。ワイはなんにも覚えへんからね~。」(tokenの発行)
webサーバ: 「ワイのとこで何かしたかったらtoken見せてな。それが証や」
クライアント: 「へいへい~ 通るで~ token持ってるからええやろ」(リクエストヘッダーにtokenを含める)
webサーバ: 「お!token持ってるやんけ、ほんなら通ってええやで。」(tokenの検証を行う)

ってな感じになると思います。

tokenの特徴としてはtokenを検証するだけなわけです。冒頭で紹介したように、状態の管理は行わないんですね。

まとめ

簡単ではありますが、session(cookie)とtokenの概要はわかりましたでしょうか?

まだまだ足りないところは多いかもしれないですが、大枠はこんな感じでしょうかね。

自分の為にも良い確認ができました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA