特別是,我寫了一個Rails應用程序,我在其中使用默認(在Rails 2.3.5)CookieStore
會話存儲,我發現了一個奇怪的問題。如何防止Rails用戶意外認證爲錯誤的用戶?
我自己和其他一些人一直在使用這個網站幾個星期,我們每個人都有一個基於用戶名和密碼的登錄(每個用戶都註冊了他們自己,並且將(鹽漬和散列)數據存儲在數據庫中)。我將用戶標識存儲在Rails session
對象中(並且因此存儲在瀏覽器和服務器之間來回傳遞的cookie中)。這裏
很重要的一點:因爲這是一個內部網站,我設置的Cookie活路了長達2周,以避免登錄所有的時間用戶。
今天,我重新設置數據庫,抹所有用戶的記錄(以及所有其它數據,故意)。一些用戶開始重新註冊自己,然後一位用戶發現,自他們第一次進入網站後,他們自動以不同的用戶身份登錄!
我想我能看到爲什麼會這樣:服務器從用戶的瀏覽器通過用戶ID現在在我的數據庫匹配不同的用戶記錄。我最初的想法是「哦,親愛的,我沒想到那個!」但我越想越多,我意識到這可能是預期的行爲。
我知道我可以改變我的Rails應用程序到用戶ActiveRecordStore
,但我這樣做,我想確保我明白這是怎麼回事之前。具體來說,使用CookieStore
會話和讓會話保持活動一段時間的組合是否真的會造成這樣一個巨大的安全漏洞?或者我錯過了什麼? session_id
應該在這裏提供一點安全性嗎?
這看起來很簡單,我會在將來編寫的基於CookieStore的Rails應用程序中使用它。 – Ben 2010-10-29 11:52:24