cookie雖然在持久保存客戶(hù)端數據提供了方便,分擔了服務(wù)器存儲的負擔,但還是有很多局限性的。
第一:每個(gè)特定的域名下最多生成20個(gè)cookie
1.IE6或更低版本最多20個(gè)cookie
2.IE7和之后的版本最后可以有50個(gè)cookie。
3.Firefox最多50個(gè)cookie
4.chrome和Safari沒(méi)有做硬性限制
IE和Opera 會(huì )清理近期最少使用的cookie,Firefox會(huì )隨機清理cookie。
cookie的最大大約為4096字節,為了兼容性,一般不能超過(guò)4095字節。
IE 提供了一種存儲可以持久化用戶(hù)數據,叫做uerData,從IE5.0就開(kāi)始支持。每個(gè)數據最多128K,每個(gè)域名下最多1M。這個(gè)持久化數據放在緩存中,如果緩存沒(méi)有清理,那么會(huì )一直存在。
優(yōu)點(diǎn):極高的擴展性和可用性
1.通過(guò)良好的編程,控制保存在cookie中的session對象的大小。
2.通過(guò)加密和安全傳輸技術(shù)(SSL),減少cookie被破解的可能性。
3.只在cookie中存放不敏感數據,即使被盜也不會(huì )有重大損失。
4.控制cookie的生命期,使之不會(huì )永遠有效。偷盜者很可能拿到一個(gè)過(guò)期的cookie。
缺點(diǎn):
1.`Cookie`數量和長(cháng)度的限制。每個(gè)domain最多只能有20條cookie,每個(gè)cookie長(cháng)度不能超過(guò)4KB,否則會(huì )被截掉。
2.安全性問(wèn)題。如果cookie被人攔截了,那人就可以取得所有的session信息。即使加密也與事無(wú)補,因為攔截者并不需要知道cookie的意義,他只要原樣轉發(fā)cookie就可以達到目的了。
3.有些狀態(tài)不可能保存在客戶(hù)端。例如,為了防止重復提交表單,我們需要在服務(wù)器端保存一個(gè)計數器。如果我們把這個(gè)計數器保存在客戶(hù)端,那么它起不到任何作用。