Web技術基礎
關於一般帶簽章的JWT(JSON Web Token),下列說明何者正確?
- A酬載以簽章金鑰加密,因此即使放入密碼或信用卡號碼傳送,途中也不會被讀取
- B即使是已過有效期限的權杖,只要簽章正確就代表沒有遭竄改,伺服器必須接受
- C把標頭、酬載、簽章以Base64URL編碼並以「.」串接而成,簽章可偵測竄改,但內容並未加密
查看答案與解析
正確答案:C. 把標頭、酬載、簽章以Base64URL編碼並以「.」串接而成,簽章可偵測竄改,但內容並未加密
JWT由「標頭.酬載.簽章」三個部分組成,標頭放入簽章演算法(例如HS256),酬載放入使用者識別碼、有效期限(exp)等資訊(宣告)。簽章是以秘密金鑰由標頭與酬載產生,因此收到的伺服器可以確認內容沒有遭竄改以及發行者。不過Base64URL並不是加密,任何人都能還原讀取,因此不要放入機密資訊。送往API時,一般放在Authorization: Bearer之後傳送。
- A. 帶簽章之JWT的酬載只是經過編碼,任何人都能讀取。不要放入機密資訊。
- B. 伺服器除了簽章,也會確認有效期限(exp),不接受已過期的權杖。
- C. 正確。簽章可偵測竄改,但內容並未加密。