Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
【20221015 Zli 大LT】SPAのセッション管理ってどうすればいいの
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
kashu
October 15, 2022
Programming
0
1.2k
【20221015 Zli 大LT】SPAのセッション管理ってどうすればいいの
2022年10月15日のZli大LTで発表したスライド
kashu
October 15, 2022
Tweet
Share
More Decks by kashu
See All by kashu
【2022/12/17 学内LT】学内環境にasdfを入れてみた &&NEC IXルーターを買ってみた
kashu02
0
190
【2022/11/20 学内LT】 ぼくのかいはつかんきょうしょうかい
kashu02
0
48
Other Decks in Programming
See All in Programming
Amazon Bedrockを活用したRAGの品質管理パイプライン構築
tosuri13
5
800
【卒業研究】会話ログ分析によるユーザーごとの関心に応じた話題提案手法
momok47
0
200
なぜSQLはAIぽく見えるのか/why does SQL look AI like
florets1
0
480
IFSによる形状設計/デモシーンの魅力 @ 慶應大学SFC
gam0022
1
310
それ、本当に安全? ファイルアップロードで見落としがちなセキュリティリスクと対策
penpeen
7
4k
CSC307 Lecture 08
javiergs
PRO
0
670
Automatic Grammar Agreementと Markdown Extended Attributes について
kishikawakatsumi
0
200
OSSとなったswift-buildで Xcodeのビルドを差し替えられるため 自分でXcodeを直せる時代になっている ダイアモンド問題編
yimajo
3
630
15年続くIoTサービスのSREエンジニアが挑む分散トレーシング導入
melonps
2
230
CSC307 Lecture 09
javiergs
PRO
1
840
AI によるインシデント初動調査の自動化を行う AI インシデントコマンダーを作った話
azukiazusa1
1
750
日本だけで解禁されているアプリ起動の方法
ryunakayama
0
270
Featured
See All Featured
WENDY [Excerpt]
tessaabrams
9
36k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
250
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Documentation Writing (for coders)
carmenintech
77
5.3k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.3k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.9k
Building an army of robots
kneath
306
46k
Become a Pro
speakerdeck
PRO
31
5.8k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
750
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
110
Git: the NoSQL Database
bkeepers
PRO
432
66k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Transcript
SPAのセッション管理って どうすればいいの? 会津大学 学部1年 kashu
自己紹介 名前: 粕谷 俊介 (kashu, かしゅー, かーしゅ, かしゅ etc..) s1300071
(学部1年) Zli所属 (REMsも所属?) Node.jsをやってきた。 インフラにも興味がある。自宅サーバー最高! GoとReactをやらなければならない。 なにもできません!教えてください! @kasukashu02 2
目次 1. なんでこの話をするの 2-1. セッション認証とトークン認証 - セッション認証 2-2. セッション認証とトークン認証 -
トークン認証 3-1. CookieとWeb Storage - Cookie 3-2. CookieとWeb Storage - Web Storage 4. つまりどうすればいいの 3
1. なんでこの話をするの? ハッカソンでWebアプリを制作(中) →SPAでセッション情報ってどうやって持つのがいいんやろ 4
2-1. セッション認証とトークン認証 セッション認証 - SessionIDをサーバー側で発行して、 SessionIDとユーザ情報を紐づけたデータを DBに保存 - ブラウザ側でSessionIDを保存 特徴
・一番よく見る ・ステートフル デメリット ・いちいちDBにアクセス ・インメモリデータベースを使うと、スケールが大変 メリット ・サーバー側でログアウトができる 5
2-2. セッション認証とトークン認証 トークン認証 - ユーザー情報が含む暗号化されたトークンを サーバー側で発行 - ブラウザ側でTokenを保存 - リクエスト毎にデコードする
特徴 ・ステートレス ・JWT(JSON Web Token)が多く用いられる デメリット ・不正アクセスがあってもサーバー側でログアウトできない ・リクエストが重くなる メリット ・サーバー側でログイン状態を持つ必要がない 6
3-1. CookieとWeb Storage Cookie 7 - key-value形式で保存 - Set-Cookieヘッダを受け取り、ブラウ ザにCookieを設定
- Set-Cookieヘッダを返したドメインの み、Cookieを送信 属性 Path: 指定したパスが含まれている場合にのみ送信 Domain: 指定した場合、サブドメインを含む Expires: Cookieの有効期限(時刻指定) Max-Age: Cookieの有効期限(経過時間指定) Secure: HTTPSの場合のみCookieを送信 SameSite: CSRF対策に有効 HttpOnly: JavaScriptでアクセスできない(XSS対策に有効) (基本的に)CSRFトークンの実装が必要 !
3-2. CookieとWeb Storage Web Storage 8 - (Cookieと比べれば)最近できた - sessionStorageとlocalStorageがある。
- 同一オリジンの場合にのみアクセス可能 - Cookieよりも容量が大きい - JavaScriptからアクセス可能←XSSの可能性! - 指定しなければ勝手に送信されない ←CSRFの可能性はない Web Storage XSS対策をする必要がある→めんどくさすぎ(というか無理なのでは)
4. つまりどうすればいいの SPAとAPIが同一オリジンの場合 - CookieのSameSite属性をつけて、セッション認証 - CookieのSameSite属性をつけて、トークン認証 (ただし、サーバーサイドから任意のタイミングでログアウトできない ) SPAとAPIが別オリジンの場合
- Cookieでセッション認証。CSRFトークンも必要 - Cookieでトークン認証。CSRFトークンも必要 (ただし、サーバーサイドから任意のタイミングでログアウトできない && CSRFトークンをJWTの中に暗号化して保存する必要 ∵JWTのPayloadは確認できる) 9
ご静聴ありがとうございました! 10