Skip to content
All writing Part 01 of 07 · 一次 JWT 稽核背後的七個盲點
Engineering · 1 min read

JWT 是什麼:三段結構與簽章

JWT 有三段:header、payload、signature。前兩段任何人都能讀。簽章是唯一需要金鑰的部分。

JWT(JSON Web Token)是一個簽過章的 JSON 物件。三段用點號分隔。

eyJhbGci... Header . eyJzdWIi... Payload . SflKxwRJ... Signature header: { "alg": "HS256", "typ": "JWT" } payload: { "sub": "user-42", "aud": "my-app" } signature: HMAC(secret, header + "." + payload)

每段是 base64url 編碼。任何人都能解碼 header 和 payload。JWT 不是加密。簽章是唯一需要金鑰的部分。

部分內容任何人都能讀?
Header演算法、token 類型是,base64 解碼
Payload宣告(sub、aud、exp、iss)是,base64 解碼
Signature完整性證明否,需要金鑰驗證

簽章回答一個問題:「持有金鑰的人,建立了這段 header + payload 嗎?」攻擊者改動 payload 的任何一個位元,簽章就壞掉。

警告: JWT 不隱藏資料。不要把密碼或 API key 放進 payload。

稽核中的發現: 朋友的 side project 把 email 和 displayName 放在 payload。這沒問題,這些不是秘密。但如果有人把密碼也塞進去,就等於公開了。

「簽章回答『有沒有被改過』。但它不回答:誰簽的、給誰用、還有沒有效。」

參考來源

回到總覽:一次 JWT 稽核背後的七個盲點 · 對稱與非對稱簽章 · 六個標準宣告

Tags #jwt #security #authentication
// connect

Be brave | Be wise | Be grateful

21 BreakinCode

// elsewhere
LinkedInMedium (lang: en)Youtube
wh:~$William Hung· © 2026 Taipei · GMT+8 · Available for collaboration