Upgrade to Pro — share decks privately, control downloads, hide ads and more …

セッションとクッキーの謎

mu_zaru
September 10, 2020
910

 セッションとクッキーの謎

配信動画はこちら
https://www.youtube.com/watch?v=EgUgmYLuLYE&feature=youtu.be

もし良かったらムーザルちゃんねるのチャンネル登録お願いします!
https://www.youtube.com/channel/UCLPHXwLp90A5R69Eltxo-sg

Twitter でもプログラミングネタをつぶやいているのでフォローお待ちしております。
ムー
https://twitter.com/mu_vpoe
zaru
https://twitter.com/zaru

mu_zaru

September 10, 2020
Tweet

Transcript

  1. 話す人 現役のエンジニア二人 赤貝が好きな CTO と デザイン勉強中のエンジニア @mu_vpoe 最近は SwiftUI で

    macOS アプリづくりが 趣味 ムー zaru @zaru CTO, Love 赤貝, JavaScript, Firebase, Web Components. Twitter フォロー お願いします!
  2. これセッション に保存しよう これ Cookie に 保存しよう Cookie を クリアしよう Cookie

    が 切れてるな〜 セッションが 切れてる〜 セッションを クリアしよう こんな事を言ってるけど…
  3. HTTP はステートレス リクエスト1 リクエスト2 こんにちは サーバーさん ブラウザー君 初めまして またきたよ 初めまして

    同じブラウザでリクエスト をしても、サーバからする と、同じユーザとは認識が できない ( 状態を持たない )
  4. ブラウザがサーバに Cookie を渡す リクエスト1 リクエスト2 zaru と証明 する cookie あげる

    サーバーさん ブラウザー君 cookie もぐもぐ zaru さんですね 通ってよし! またきたよ cookie もぐもぐ zaru さんですね 通ってよし! Cookie で セッションを実現している
  5. Cookie はサーバが作って ブラウザに渡す zaru のログイン ID とパスワード入力〜 サーバーさん ブラウザー君 認証できました。

    証明する Cookie を あげます これをサーバサイド Cookie と呼びます。他にブラウザで JavaScript を使っ て Cookie を作ることもできます。これをクライアントサイド Cookie と呼び ます。セッションで使われる Cookie は主にサーバサイド Cookie です
  6. key=value; expires=Fri, 27-Sep-2019 09:19:40 GMT; Max-Age=3600; domain=example.com 実際のCookie のデータ データ本体

    key と value を = で 組み合わせている Cookie は 4KB までしか保存できない メタ情報 有効期限や有効ドメインなど (ブラウザによって多少の差はある) これ全部で 4KB 以下にする必要がある
  7. Cookie にセッション ID をいれる Cookie にはサーバが発効したランダムな ID を埋め込み、それをサーバが受け取ってユー ザを特定する。Redis などの永続的なデータストアに実際のデータが入っていたりする。

    zaru のログイン ID とパスワード入力〜 サーバーさん ブラウザー君 認証確認できました。 証明する Cookie をあ げます Key Value SessionID BYZhS252yA データストアさん セッション ID が BYZhS252yA は ユーザ zaru です SessionID Key Value BYZhS252yA UserID 1000
  8. ブラウザ Cookie 全部入り Redis DynamoDB ファイル メモリ メリット • サーバが保持する必

    要がない • サイズ制限がない • 自由に変更できる • サイズ制限がない • 自由に変更できる • 無限にスケールし管 理コストが小さい • ミドルウェアが必要 ない • 自由に変更できる • 何も用意しなくて良 い デメリット • サイズ制限がある • 自由に変更できない • 管理コストがある • ディスク容量の制限 がある • クライアントライブ ラリがあまりない • リクエストが多いと ファイル数が増える • スケールしにくい • 再起動などで消える • 基本開発用 比較表 よく見る Web アプリの構成だと Redis を使っているところが多そう。 おすすめは Cookie 。Cookie を使って問題になるようであれば別のを検討する。 他にも memcached や RDB など色々ある → サーバサイド側 クライアント側 ←