如何安全地解碼 JWT 令牌並檢查宣告
快速解答
若要解碼 JWT:將令牌貼到 JWT 解碼器中,標頭和有效負載會立即顯示為 JSON 格式。該工具在本地解碼 Base64URL 編碼的部分 - 您的令牌永遠不會離開您的瀏覽器。請記住:解碼僅顯示內容;它不驗證簽名。
介紹
JWT (JSON Web 令牌) 是一種緊湊的、URL 安全的令牌格式,用於身份驗證和資訊交換。 JWT 三個由點分隔的部分: header.payload.signature。標頭指定演算法和令牌類型,有效負載包含聲明(使用者 ID、角色、過期時間),簽名證明令牌未被竄改。解碼 JWT 可以讓您檢查其內容以進行調試 - 但解碼並不能驗證真實性。本指南向您展示如何在瀏覽器中安全地解碼 JWT。
步步
-
開啟JWT解碼器工具
進入JWT解碼器工具頁。此工具接受任何 JWT 字串(由點分隔的三個 Base64URL 編碼部分)。
-
貼上您的 JWT 令牌
將 JWT 貼到輸入欄位中。典型的 JWT 如下:eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ1c2VyMSJ9.signature。該工具自動檢測這三個部分。
-
查看解碼後的標頭
該工具 Base64URL 解碼第一部分並將其顯示為 JSON。標頭通常包含“alg”(演算法,例如 HS256)和“typ”(類型,通常為“JWT”)。
-
檢查解碼後的有效負載(聲明)
該工具對第二部分進行解碼,並將聲明顯示為 JSON 格式。常見聲明包括「sub」(主題/使用者 ID)、「iat」(發佈於)、「exp」(過期)和「role」(使用者角色)。
-
檢查簽名(第三部分)
該工具顯示簽名部分。注意:解碼不驗證簽名。要進行驗證,您需要簽署金鑰和驗證庫。在未驗證簽章伺服器端的情況下,切勿相信 JWT 的宣告。
範例
解碼一個簡單的 JWT
輸入: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyMSIsIm5hbWUiOiJBbGljZSIsImlhdCI6MTY5MzUyNjQwMH0.signature
輸出: Header: {"alg":"HS256","typ":"JWT"}
Payload: {"sub":"user1","name":"Alice","iat":1693526400}
JWT 帶有過期聲明
輸入: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhZG1pbiIsImV4cCI6MTY5MzYxMjgwMH0.sig
輸出: Header: {"alg":"HS256"}
Payload: {"sub":"admin","exp":1693612800}
常見問題
- 混淆解碼和驗證 — 解碼 JWT 僅讀取其內容;它不能證明令牌是真實的。始終使用簽名密鑰驗證簽名伺服器端。
- 信任過期的令牌 - 檢查「exp」聲明並拒絕過期的令牌。 “exp”值是以秒為單位的 Unix 時間戳記。
- Base64 與 Base64URL —JWT 使用 Base64URL 編碼(無填充,- 和 _ 代替 + 和 /)。標準 Base64 解碼器在 JWT 元件上將會失敗。
- 任何擁有令牌的人都可以讀取有效負載 —JWT 有效負載中的敏感資料。不要在有效負載中儲存密碼、信用卡號或其他機密。
提示
- 在信任任何聲明之前,請務必驗證伺服器端的 JWT 簽章 - 單獨解碼並不是驗證。
- 檢查“exp”(過期)和“nbf”(不在之前)聲明,以確保令牌在當前時間有效。
- 將短期令牌(15-60 分鐘)與刷新令牌一起用於長時間會話 — 最大限度地減少令牌洩漏時造成的損失。
- 使用我們的 JWT 解碼器進行安全的本地偵錯 - 您的令牌永遠不會離開您的瀏覽器。