天天看點

切勿使用Json Web令牌進行身份驗證JWT登入系統潛在問題)結論

切勿使用Json Web令牌進行身份驗證

我一直在與JWT(JSON網絡令牌)打交道很長一段時間,我看到很多人試圖用它們作為會話和cookie的替代品。但是在做了一些廣泛的研究之後,我結識了更多的人,他們分享我的意識形态,認為Json網絡令牌将被證明是會話和cookie的可靠替代品。

首先,讓我們快速了解如何在使用者登入系統中使用JWT。

JWT登入系統

談到JWT,使用JWT代替傳統登入系統的第一個好理由就是我們可以在每個請求上傳遞JWT并且JWT将包含使用者ID。如果JWT有效,即由伺服器本身建立,則伺服器接受它并讓使用者執行所需的操作。這樣,您可以省去點選資料庫的麻煩,檢查是否讓我登入Cookie并管理會話。

潛在問題)

即使對我來說,JWT也非常有吸引力,直到我深入思考并意識到一些潛在的問題,使得JWT顯得無用身份驗證。

您在JWT中存儲的内容

需要注意的是,JWT最終必須以cookies或網絡存儲的形式存儲在使用者的裝置中。是以,任何有權通路裝置和令牌的人不僅可以閱讀JWT,還可以閱讀JWT的内容。震驚嗎?那麼,對于不了解JWT工作的人來說,這是一個現實檢查。是以希望唯一可以存儲的就是使用者辨別,即使這樣你每次都必須點選資料庫來檢查使用者可以執行的操作,比如角色等。

讓我保持登陸狀态

保持登入令牌通常以cookie的形式存儲,并且可以幫助您避免每次打開網站時都輸入密碼。一般程式是令牌存儲在用于啟動會話的cookie中。但用JWT替換會話意味着你完全處于令牌的擺布之中。想一想,如果某人的裝置被盜,他們會失去他們的标記,現在任何擁有該标記的人都可以登入。而且它甚至不像您可以從已準許令牌的清單中删除該令牌,因為如果您這樣做,這意味着伺服器将不得不在每個請求中檢查該令牌的存在。同樣,這會在使用令牌時造成更多的傷害。

速度

速度在登入系統中非常重要。有些人現在會指出解碼JWT可能比從資料庫中擷取資料要快,但不應該忘記JWT必須在每次請求時都解碼,這與傳統方法不同,後者隻需要觸摸資料庫一次在一開始的時候。

結論

智威湯遜是一項出色的技術,但它們不是登入系統的替代品。考慮到我們在本文中讨論的事實,在登入流程中使用它們将是一場完全災難。這些隻是我的看法,請随時在下面的評論部分添加到這個主題。