使用進程內會話狀態在擴展Web應用程序方面是不利的(對羣集不適用,服務器回收時彈出)。使用Cookie進行Web會話狀態 - 有哪些缺陷?
假設您只需要在會話狀態下保留少量信息,那麼爲此目的使用加密的cookie項目而不是特定的狀態服務器/ db的缺點是什麼?
很明顯,使用cookie會產生少量的網絡開銷,並且顯然你是在假設客戶端瀏覽器/移動設備上啓用了cookie的情況下運行的。
您可以通過方法看到其他哪些缺陷?
這對於簡單,可伸縮和健壯的會話來說是一個不錯的選擇嗎?
使用進程內會話狀態在擴展Web應用程序方面是不利的(對羣集不適用,服務器回收時彈出)。使用Cookie進行Web會話狀態 - 有哪些缺陷?
假設您只需要在會話狀態下保留少量信息,那麼爲此目的使用加密的cookie項目而不是特定的狀態服務器/ db的缺點是什麼?
很明顯,使用cookie會產生少量的網絡開銷,並且顯然你是在假設客戶端瀏覽器/移動設備上啓用了cookie的情況下運行的。
您可以通過方法看到其他哪些缺陷?
這對於簡單,可伸縮和健壯的會話來說是一個不錯的選擇嗎?
這是簡單,可擴展且健壯的會話的極好方法。 當然,你的加密的質量很重要,而且這往往是棘手的事情,但這是可能的。
我不同意其他一些海報:
,可以對可以對存儲在cookie中的會話密鑰啓動加密cookie值推出任何重放攻擊。如果這很重要,請使用https。
如果cookie被清除,存儲在狀態服務器或數據庫中的會話數據也會丟失;當會話密鑰丟失時,會話不能再被檢索。
另一個缺陷是,他們可以被盜取並在您的網站上重播。
順便說一句:與其將某些東西存儲在cookie中,您還應該考慮在cookie中存儲密鑰並使用類似memcached的內容(memcached可在多個服務器場中使用)。
好點。這可以通過加密的時間戳cookie組件來抵制嗎? – 2008-12-29 23:05:31
通常,一個cookie用於會話ID,所以只要信息量很小,將信息存儲在cookie中是一個不錯的選擇,儘管你不應該存儲任何有價值的東西(比如CC號碼,SSN等)應該真的存儲在cookie中,即使加密。
我不是專家,但以我的經驗,我發現以下是真實的(至少使用PHP和ASP.Net)。
餅乾
狀態服務器啓用/ DB
取決於試圖存儲的內容 – Shawn 2008-12-29 22:46:20
由於cookie將被加密,所以實際的cookie內容不應該那麼重要,更重要的是規模。思考? – 2008-12-29 22:49:43