# JWT Lab2 本題是基於 JWT 的機制來處理會話,伺服器配置為接受未簽名的 JWT 不安全,要解決該實驗室問題,請修改的工作階段令牌以訪問的管理面板 ,然後刪除使用者 carlos。 登入帳號:`wiener:peter` 一樣登入帳號。   發現是 JWT 格式,所以我們拿去解碼。  這裡直接改 admin 是不行的,因為他會去做驗證,但現在我想繞過驗證的話,我們可以嘗試使用:`alg: none` :::info ### 為什麼要改 `alg: none`? 一些開發者或框架誤以為 `alg: none` 只是跳過驗證而已,沒處理簽章段,結果導致這樣的情況: - `alg = "none"` ➜ 不驗證簽章 ➜ 但不管你簽章有沒有,它都不管了 - ### 為什麼要刪除第三段? - 為什麼要移除簽名? ➜ 因為 `alg: none` 的 JWT 根據規範不該有簽章(要以 .<末尾> 結束)。 - 如果沒移除會怎樣? ➜ 視伺服器而定:安全實作會拒絕,不安全實作可能誤接受(但不建議賭)。 - 怎麼改最安全? ➜ 把 alg 改為 "none",移除第三段簽章並保留結尾 `.`。 :::  ``` eyJ0eXAiOiJKV1QiLCJhbGciOiJub25lIn0.eyJpc3MiOiJwb3J0c3dpZ2dlciIsImV4cCI6MTc1NDIxMzI5Miwic3ViIjoiYWRtaW5pc3RyYXRvciJ9. ```  結果確實登入進來了。  ---
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up