我試圖使用這裏列出的系統實施「記住我」實用工具:Improved persistent login cookie實施記得我令牌和一系列跨越多個設備
然而,有在這裏對我來說是邏輯的問題,並在想,如果任何人都可以爲我解決這個問題。
給用戶一個會話ID。這是一個隨機生成的字符串,在用戶帳戶的整個生命週期中爲 。
給用戶一個令牌ID。這是一個隨機生成的字符串和 重新創建每次用戶成功登錄的時間。
這兩個值都存儲在用戶的計算機上,並在數據庫中籤餅乾。
想法是,如果有人設法欺騙用戶的令牌和系列並以用戶身份登錄,那麼他們將生成新的令牌ID。下一次合法用戶嘗試登錄時,他們將有一個匹配的系列,但是一個無效的令牌,從而通知系統發生了安全漏洞,並且可以採取任何必要的操作(清除用戶的令牌)。
這太好了。但是,當用戶嘗試從多個設備或瀏覽器使用我的應用程序時會發生什麼?假設用戶使用Chrome登錄我的服務並檢查記住我。下次他們通過Firefox登錄並選擇記住我。一個新的令牌將被生成,以便下次用戶嘗試使用Chrome登錄時會觸發錯誤的盜用 - 不是嗎?
如果是這種情況,我該如何更可靠地實施此解決方案?我很清楚,基於cookie的授權本質上不太安全,並且不允許cookie授權用戶執行任何破壞性行爲,例如購買。
謝謝你現在有道理。我將擁有一堆令牌,並在未使用時給他們30天的有效期,因此我不會用冗餘數據填充數據庫。 –