2017-01-05 132 views
1

在我們的應用程序中,每當用戶發送請求時,即使之前的壽命仍然很長,新的JWT令牌也會返回cookie中。如果用戶在很短的時間內發出多個請求,則每個有多個有效令牌將近終生。瀏覽器當然是使用最新的瀏覽器,但有人可能仍然使用以前的模擬用戶。如何在刷新後使以前的JWT令牌無效

有沒有辦法在分派新標記時使上一個標記無效,或者只有在最後一個標記沒有多少生命期時才能分派新標記?

回答

1

「無效」令牌的唯一方法是通過有狀態地跟蹤它們。

這通常意味着要做一些事情,如保持有效和無效的標記的鍵/值緩存,並檢查每個請求上的這些列表的傳入請求標記。

這樣做的缺點是您失去了很多JWT的'無狀態'好處(因爲您仍在檢查集中式存儲以獲取令牌有效性),但好處是您可以更安全'立即撤銷令牌,你不再需要服務。

一種解決方法是讓您的訪問令牌非常短暫(5分鐘左右),以儘量減少濫用。

+0

如何將客戶端IP嵌入到令牌中,並將即將到來的請求IP與經過驗證的令牌的IP進行比較?這可以防止惡意用戶使用盜取的令牌獲取敏感數據(儘管如果他還可以獲得CSRF令牌,他仍然可以通過欺騙他的IP來發布POST請求) –

+0

您可以嘗試此操作,但IPS不是唯一標識符。特別是在公共網絡(手機,辦公室wifi等)。如果你正在構建一個安全敏感的應用程序,我不會那樣做。 – rdegges

+1

不夠公平,NAT也可能有問題 –