2016-11-22 45 views
1

我一直在努力解決這個問題的過去一個月。會話ID驗證 - 安全 - 離子/角

當用戶登錄時,會在數據庫中創建會話令牌並存儲在localStorage中。這使我可以在每次關鍵服務器調用時驗證用戶(通過嘲諷sessionID到服務器並將其值與DB上存儲的值進行比較),但是如果我從任何用戶的localStorage中複製特定會話ID我可以粘貼到我的localStorage並驗證。這是我需要填補的一個非常大的差距。驗證sessionID並避免某人複製並粘貼它的正確方法是什麼?如何讓localStorage編碼給用戶?

注:的SessionID使用JWT創建, 會話令牌是完全隨機的,創建登錄後, 值被存儲在用戶的列的列,並保存在localStorage的

回答

3

有沒有什麼你可以做到完全防止這樣的事情。如果攻擊者能夠物理訪問某臺計算機以便能夠從本地存儲中進行復制和粘貼,則無法阻止它們。

有幾件事你可以稍微緩解它,但它們比其他任何東西都更適合於窗戶,而且它們通常會導致比解決問題更多的問題。其中之一是將會話固定到IP地址。如果會話從一個地址開始,然後移動到另一個地址,則可以使會話無效並強制用戶重新進行身份驗證。但是,隨着他們的機器跨越網絡,這會導致合法用戶出現很多問題。移動設備加劇了這種情況,但即使是固定式設備也難以保持穩定的IP地址。

+0

感謝您分享您的意見。我同意ip地址固定聽起來有問題。 –

+2

+1爲一個好的,明智的答案。一些可能會增加一些價值的增強功能是定期更改令牌(比如每隔10分鐘)以減少複製令牌的機會窗口(以及日誌重放嘗試),並確保提供明確的註銷功能,將本地存儲中的副本撕碎。 – symcbean

+0

非常好的建議symcbean。謝謝。 –