國立聯合大學

#請益 jwt token權限問題

8月12日 01:11
想請問大神們😣 最近自己寫一個side project 是做前後端分離的 權限有分管理者和一般使用者 登入之後後端會傳一個jwt token和權限放在前端的localstorage(如下圖) 把管理者代1 一般使用者代0 可是覺得這樣好像很不安全 不過又找不太到該怎麼做 想請問前後端分離如果要做這種權限功能 jwt token的流程應該怎樣比較正確且安全呢 謝謝🙏
imgur
愛心
9
留言 18
文章資訊
共 18 則留言
在 jwt 的 payload 紀錄使用者的 id,然後在資料庫儲存每個使用者的身分或權限之類的資訊
國立清華大學 資訊工程學系
JWT payload 內的資訊是不能被修改的 所有你可以在登入之後把 user 的 scopes 放到 payload 裡面 然後放心的使用裡面的值(當然妳要檢查 JWT 的合法性 個人覺得用 permission 0/1 的話擴展性會太差 因為以後可能還會有不只 admin/user 兩種角色 可以考慮 RBAC 類的設計 樓上那樣每次 request 都要 query DB 效率會不好
原 PO - 國立聯合大學
如果我在localstorage存放0/1 這樣會不會容易被竄改呢 如果是把0/1放在jwt的payload裡面 前端就沒辦法調用它的權限等級 來決定每個頁面是否有權訪問了
國立清華大學 資訊工程學系
B3 存在 client 的資料沒辦法確保他不被修改 也就是你可以用 client 端的任何資訊來判斷要不要讓使用者進入某個頁面 但如果那個頁面的資訊是需要權限才能看到的 那妳就一定要用 API 從後端通過驗證再拿 另外 Jwt 的 payload 部分並沒有加密 你可以直接 base64 decode 中間那段 就可以拿到 payload 的值了
中原大學
一起放進token不行嗎?
國立高雄科技大學
我都是token存userid,然後丟給後端解開之後,把id拿來做比較,譬如要update或是delete一項東西,會把儲存在裡面的userid 拿來跟token 的 userid 做比較,如果符合就可以進行操作
國立成功大學
一般都是直接放在jwt token的claims內,解完token後會api再設定可以使用的權限範圍
國立臺灣科技大學
我覺得最主要還是 jwt 簽章的部分該驗就要驗好,系統設計要用 HS264 就確保一定要用 HS264 驗,用 RS264 就確保一定使用 RS264 驗,不要偷懶不驗證或是用 none 不然就算是用存 0/1 或是 b1 說的存 id 都有可能有 BAC (Broken Access Control) 的問題 然後就是可以看別人怎麼針對 jwt 做攻擊來思考自己的做法夠不夠安全,以及如果是用相關套件的話可以關注那個版本有沒有 cve 之後的
大同大學 資訊工程學系
權限設計跟身份認證是兩件事
高雄醫學大學
你後端也要驗證權限吧