我一直使用基於cookie的會話存儲,甚至從未知道Cookies。那麼是否有任何情況需要cookies碎片?在基於cookie的會話存儲中,會話和Cookie是同一件事
回答
Cookie散列在Rails應用程序中肯定有價值。 您應該使用cookie在客戶端存儲要在會話之間記住的值。
「記住我」令牌就是一個很好的例子。如果你想允許用戶在訪問你的網站時自動登錄,只需要存儲一個持久的cookie,用一些用戶防篡改值(比如映射到你的數據庫中該用戶行的獨特散列或guid(good)),但是不是像只使用普通的舊整數用戶ID(壞)hackable)。然後,當用戶訪問您的網站時,您可以檢查記憶我記號的cookie哈希值,如果找到,請在您的數據庫中進行查找,並在發現匹配時將用戶登錄。這是一種非常普遍的做法。
如果您需要/希望將明文值存儲在客戶端cookie中,但不希望用戶能夠使用這些值,只需將該值的散列值存儲在伴隨cookie中並加上散列值具有用戶未知的某些值。然後,您只需計算從客戶端cookie收到的明文值的哈希散列值,並將其與從客戶端cookie傳遞的散列值進行比較。如果他們匹配,你可以信任它。
您不應該存儲任何您不希望用戶在Cookie中查看或更改的內容。如果你存儲了一個成員ID,那麼用戶可以很容易地改變它的值並假裝成其他人。 Cookies也隨每個請求發送到您的Web服務器,包括圖像,JS和CSS請求。如果您在cookie中存儲大量信息,這可能會影響速度。
基於Cookie的會話(在一般情況下,我不能說我知道Rails會做什麼)意味着您的會話變量與隨機生成的會話ID相關聯。此ID和唯一的ID將作爲cookie返回給用戶。這允許您將用戶請求(因爲您擁有會話ID cookie)與用戶的會話相關聯。這比較安全,因爲有人猜測另一個用戶會話的ID很困難。
是的我在爲思考如何實現記住我的OpenID登錄時,對cookie與會話的關係感到非常困惑......實際上,這與實現基於密碼的登錄沒有區別。但那不是我的代碼,它來自於寧靜認證插件,沒有什麼事情像你自己想想整個過程。
任何可能使用cookie的情況似乎都由cookie會話存儲提供。軌道cookie會話存儲是安全的,因爲最終用戶可以讀取會話數據但無法修改它。
- 1. 會話和cookie是同一件事嗎?
- 2. php:基於cookie的會話
- 3. 將Cookie存儲到Cookie或會話中?
- 4. 是否有基於cookie的nodejs會話存儲(connect,express)?
- 5. 會話ID未被存儲在cookie中
- 6. 登錄會話cookie存儲在Symfony中?
- 7. 在mysql中存儲curl會話cookie
- 8. 在會話cookie中存儲數據
- 9. 在android.webkit.CookieManager中存儲會話cookie
- 10. Web API Cookie和會話存儲
- 11. Django基於cookie的會話數據存儲在哪裏?
- 12. rails:有沒有必要刪除會話變量(基於cookie的會話存儲)?
- 13. 在ASP.Net Cookie或會話狀態中存儲會話信息?
- 14. PHP cookie和會話
- 15. PHP會話和cookie
- 16. 會話cookie和asp.net
- 17. 會話cookie和www
- 18. Jetty/Tomcat加密的基於cookie的會話存儲?
- 19. 替代基於Cookie的會話/認證
- 20. 創建基於會話的cookie,jquery
- 21. ASP.NET基於cookie的會話,有SessionStateModule嗎?
- 22. Rails 3基於Cookie的會話問題
- 23. 基於Cookie的會話安全
- 24. 什麼是會話和cookie在php和它存儲的位置
- 25. asp.net你可以混合使用Cookie cookie會話存儲的會話數據嗎?
- 26. 無Cookie會話
- 27. Coldfusion會話Cookie
- 28. JMeter;會話cookie
- 29. Android - 會話Cookie
- 30. 會話與cookie
Rails cookie會話中的實際信息存儲在cookie中,因此會話中可以存儲的內容有4k限制。將敏感信息保留在cookie會話之外,或者使用不同的會話方法。 – Tilendor 2008-11-24 04:47:13
4k限制在某些瀏覽器中未實施,或者至少不完全正確。最近在Firefox發送16K cookie的應用程序中出現問題。這是毛病。 – 2010-07-10 00:11:21