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

六個標準宣告各擋一個缺口

簽章只擋竄改。六個標準宣告各擋住一條不同的攻擊路徑。跳過任何一個,對應的缺口就打開。

簽章驗證只回答「誰簽的?」它不證明 token 屬於你的服務,也不證明 token 還有效。每個宣告加一層防護,擋住一個不同的缺口。

Signature 沒有被竄改 alg pin 正確的演算法 iss 正確的簽發者 aud 正確的接收者 sub 正確的身分 exp 還在有效期內 jti 沒有被重送 跳過任何一層 → 對應的缺口打開
宣告沒有它會怎樣
alg(server 端 pin)攻擊者換成 none 或 RS256→HS256
iss(簽發者)別的服務用同一把密鑰簽的 token 也通過
aud(受眾)refresh token 能當 access token 用
sub(主體)消費端必須知道自訂 claim 的名稱
exp(到期時間)偷到的 token 永遠有效
jti(JWT ID)同一個 token 被重送不會被偵測

稽核中的發現: 稽核前,auth-service 簽 token 時沒有放 issaud。消費端驗證時也沒有 pin 演算法。修復後,透過 shared-contracts 統一加上了全部六個宣告。

「簽章是地基。六個宣告是六面牆。少蓋一面,風就從那裡灌進來。」

參考來源

回到總覽:一次 JWT 稽核背後的七個盲點 · iss 宣告 · 演算法混淆與 none 攻擊 · 存取與刷新令牌輪替 · 時間安全比對

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