iT邦幫忙

2025 iThome 鐵人賽

DAY 13
0
Modern Web

不只是登入畫面!一起打造現代化登入系統系列 第 13

屋內安全[ 2 / 6 ]: JWT 基礎篇:什麼是 JSON Web Token?

  • 分享至 

  • xImage
  •  
  1. JWT 是什麼?
    JWT(JSON Web Token)是一種 基於 JSON 的安全傳遞憑證,常用於:
  • 使用者登入後的身份驗證
  • API 存取授權
  • 在分散式系統間安全地交換資訊

它是一個字串,通常長得像這樣:

xxxxx.yyyyy.zzzzz

分為三個部分:

  • Header(標頭) → 說明使用的演算法與 Token 類型
  • Payload(內容) → 存放使用者資訊(例如 userId、角色等)
  • Signature(簽章) → 用來驗證 Token 是否被竄改

  1. JWT 為什麼常用?
  • 跨語言 / 跨平台:JSON 格式幾乎所有語言都支援
  • 無狀態(Stateless):伺服器不需要記錄 Session,減輕後端壓力
  • 安全性:透過簽章避免內容被惡意修改

  1. 常見問題 Q&A

Q1:JWT 的資訊是不是會被加密?
A:不一定。JWT 本身是「編碼(Base64URL)」,不是加密。
任何人拿到 Token 都可以解碼看到內容,但簽章可以保證「內容沒有被竄改」。
如果需要隱藏敏感資訊,必須另外加密。

Q2:JWT 和 Session 的差別是什麼?

  • Session:伺服器端要存放使用者資訊,需要維護狀態。
  • JWT:伺服器只要驗證 Token 簽章,不需要保存狀態,屬於無狀態驗證。

Q3:JWT 的缺點是什麼?

  • 無法單方面撤銷:發出去的 Token,在過期前如果要強制失效,必須有額外機制(例如黑名單)。
  • Token 體積大:比 Session ID 還要長,可能造成額外的網路傳輸負擔。
  • 安全性依賴管理:例如 Token 如果存放在 LocalStorage,容易遭 XSS 攻擊。

Q4:JWT 適合用在哪些情境?

  • SPA(單頁應用程式)需要與 API 驗證
  • 行動裝置 / Web 跨平台應用
  • 微服務架構,需要共享驗證狀態

上一篇
屋內安全[ 1 / 6 ]:Firebase Rules
下一篇
屋內安全[ 3 / 6 ]:Firebase Token 機制:ID Token、Refresh、自動更新與權限驗證
系列文
不只是登入畫面!一起打造現代化登入系統18
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言