</>
⌕
Mid #jwt#authentication#security#cookie

JWT nên lưu ở đâu: localStorage hay cookie HttpOnly?

⚡ Trả lời nhanh

localStorage dễ bị XSS đánh cắp token. Cookie HttpOnly + Secure + SameSite thì JS không đọc được nên an toàn hơn trước XSS nhưng cần chống CSRF. Cách phổ biến: access token ngắn hạn trong bộ nhớ, refresh token trong cookie HttpOnly và có rotation.

Nơi lưuRủi ro chínhGhi chú
localStorageXSS đọc được tokenTiện, tự gắn header Authorization
Memory (biến JS)Mất khi reloadAn toàn hơn, cần refresh để khôi phục
Cookie HttpOnlyCSRFCần SameSite, CSRF token
Set-Cookie: refresh=...; HttpOnly; Secure; SameSite=Strict; Path=/auth/refresh
Authorization: Bearer <access_token>
  • JWT gồm header.payload.signature; payload chỉ được mã hóa base64url, không bí mật: đừng nhét dữ liệu nhạy cảm.
  • Access token sống ngắn (vài phút); refresh token dài hơn, xoay vòng mỗi lần dùng và thu hồi được ở server.
  • JWT stateless nên khó thu hồi trước hạn; cần denylist hoặc session phía server nếu yêu cầu logout tức thì.
  • Luôn kiểm tra chữ ký, exp, aud, iss và cố định thuật toán phía server.
🃏 Ôn bằng flashcard