Next.js の session まわりめも
セッション周りの理解がガバすぎて、ここを読んでよくわからなかったのでめも。違ってたらぜひ教えてほしい
https://nextjs.org/docs/app/guides/authentication
session とは
毎回忘れるけど、"ページをまたいで受け渡されるデータ" が session data で、 DB とか Cookie とかはそれをどう保存するかという話
余談: session ID って危なくないんだっけ
session ID ってブラウザの dev console からいじれるから、 session ID をテキトーに変えたら他の人の情報とれるんじゃね? と思って なんで大丈夫なんだっけというのを調べた
(1) session IDs are cryptographically secure
cryptographically secure → 予測されにくい
(2) HttpOnly x 短い expiresAt
- HttpOnly = JS で操作できない = 人手でぽちぽち変えるしかない
- これに、
expiresAtが組み合わさると、制限時間内に brute force することはほぼ無理
なので、予測されにくい session ID と、 cookie の HttpOnly と、 expiresAt の設定によって守られてる
stateless session とは
個人的に stateless っていう名前が超紛らわしいと思ったんだけど、 stateless っていうのはただ「session data を DB に保存してないですよ」っていうだけだった
server-side/client-side cookies
cookie ってブラウザに保存するやつだから全部 client-side では..? と思って謎だった 結論これはあってて、 server/client は「誰が」 cookie をセットするかの違いだった