JWT 解碼
解碼 JWT Token,查看 Header 和 Payload
關於 JWT 解碼
JSON Web Token 由三段 Base64url 編碼的部分組成——header、payload、signature——以句點連接。header 指定簽名演算法;payload 帶有 claims(使用者身分、到期時間、權限等);signature 證明 token 由可信的一方發行。這個工具解碼前兩段讓你查看內容。注意:本工具不驗證簽名,簽名驗證必須在你的應用程式程式碼中使用正確的 secret 或公鑰進行。
常見使用情境
常見問題
這個工具會驗證 token 的簽名嗎?
不會。本工具只解碼 header 和 payload,不驗證簽名。解碼的 token 只能告訴你 claims 的內容,無法確認 token 是否可信。在信任任何 claim 之前,務必在後端用你的簽名金鑰透過函式庫驗證簽名。
我應該把正式環境的 token 貼到線上工具嗎?
不應該。JWT 可能包含敏感的使用者資料或帶有服務存取權限,應將正式環境的 token 視為機密。Debug 時請使用短效測試 token,或在貼上之前把 signature 段落替換掉。
exp 和 iat 要怎麼解讀?
兩個都是 Unix 時間戳,代表從 1970-01-01T00:00:00Z 起算的秒數。exp 是到期時間,iat 是發行時間。可用時間戳轉換工具換算成可讀的日期,或在 JavaScript 裡用 Date.now()/1000 > exp 來判斷是否已到期。
什麼是 alg:none 攻擊?
早期有些 JWT 函式庫會接受 header 中宣告 alg: none 的 token,並直接跳過簽名驗證,完全信任客戶端傳來的 payload。現代函式庫預設會拒絕 alg:none。這個攻擊手法提醒我們,演算法的選擇必須在後端強制執行,不能讓 token header 自行宣告。
JWT 和 session cookie 有什麼不同?
Session cookie 只儲存一個不透明的 session ID,伺服器要查資料庫才能取得對應的 session 資料。JWT 是自含式的——claims 直接編碼在 token 裡,伺服器驗證後即可讀取,不需要查資料庫。代價是 JWT 在到期前無法被撤銷,除非另外維護一個伺服器端的封鎖清單。