Tools mentioned in this article
Open the browser-based tool while you read and try the workflow immediately.
「這個 Token,裡面到底裝了什麼?」
如果您曾經實作過身份驗證,肯定看過以 eyJhb... 開頭的神秘長字串。那就是 JWT (JSON Web Token)。

「使用者 ID 有正確包含在裡面嗎?」、「有效期限 (exp) 過期了嗎?」
當產生這些疑問時,您通常會想快速確認 Token 的內容。但請等一下——您打算在哪裡解碼那個 Token 呢?
沒有什麼資料是「被看到也沒關係」的
JWT 的標頭 (Header) 和載荷 (Payload) 僅僅是使用 Base64Url 進行編碼。它們並沒有被加密,這代表任何人都能輕易讀取其中的內容。
為了確認這些內容,許多開發者會使用線上除錯工具。但如果那個 Token 是屬於正式環境的呢?如果您將敏感的 Token 傳送到不安全或惡意的網站,您的連線階段 (Session) 可能會面臨被劫持的風險。
「我只想除錯,不想冒險」。本站正是為了滿足這個完全合理的願望而建立的。
在瀏覽器中完成的安全除錯
DevToolKits 的 JWT 除錯工具 完全在您的瀏覽器中分析 Token。
我們絕不會將任何資料傳送到伺服器。您可以透過開啟瀏覽器的網路 (Network) 標籤頁來親自確認。即使按下按鈕,工具也會保持「沉默」。這份沉默就是我們能提供的最大安心感。
使用建議
- 貼上您想除錯的 Token。
- 立即查看展開後的「Header」與「Payload」。
- 若需要驗證簽章 (Verification),請貼上密鑰或公鑰以檢查完整性。
結語
JWT 是強大的工具,但一個不慎就可能導致重大的安全性事故。
請務必在安全的環境中確認您的 Token。透過養成良好的習慣,您可以享受建立更穩固、更安全系統的樂趣。
常見問題
JWT 的大小上限是多少?
規格本身沒有規定上限,但實務上受限於傳輸方式。放在 Cookie 時多數瀏覽器的單一 Cookie 上限為 4KB;放在 Authorization 標頭時,伺服器的標頭大小限制(Nginx 預設約 8KB)會成為瓶頸。把使用者的完整個人資料塞進酬載很容易撞到這條線,建議只放識別用的最小資訊。
可以在到期前讓 JWT 失效嗎?
單靠 JWT 本身做不到。JWT 是「自我驗證」的憑證,伺服器不需要查詢任何狀態就能驗證,這正是它的優點,也意味著簽發後無法撤回。若需要即時失效,必須額外準備狀態,例如維護一份撤銷清單(黑名單),或縮短存取權杖的有效期並搭配可撤銷的更新權杖。
JWE(加密)與 JWS(簽章)有什麼不同?
JWS 只保證「內容未被竄改」,酬載是 Base64URL 編碼而非加密,任何人都能解讀。JWE 則會加密酬載,讓內容無法被讀取。也就是說,把密碼或個人資料放進一般的 JWT(JWS)等於公開它們。需要隱藏內容時才使用 JWE。
密鑰可以在所有服務共用嗎?
不建議。共用密鑰時,只要其中一個服務外洩,攻擊者就能為所有服務偽造權杖。應該依服務或用途分開管理;若要跨服務驗證,改用非對稱簽章(RS256 等),只把公開金鑰分發出去,會更安全。
權杖的更新該怎麼處理?
常見做法是把有效期短的存取權杖(數分鐘到一小時)與有效期長的更新權杖分開。存取權杖過期時用更新權杖換取新的,並且在使用後讓舊的更新權杖失效(rotation)。更新權杖屬於必須保護的機密,應存放在 HttpOnly Cookie 等無法被 JavaScript 讀取的位置。