區(qū)別
session 在服務(wù)器端,cookie 在客戶端(瀏覽器)session 可以放在 文件膝晾、數(shù)據(jù)庫于樟、或內(nèi)存中都可以。
單個cookie保存的數(shù)據(jù)不能超過4K硼身,很多瀏覽器都限制一個站點最多保存20個cookie硅急。
聯(lián)系
session 的運行依賴 session id,而 session id 是存在 cookie 中的佳遂,也就是說营袜,如果瀏覽器禁用了 cookie ,同時 session 也會失效(但是可以通過其它方式實現(xiàn)丑罪,比如在 url 中傳遞 session_id),用戶驗證這種場合一般會用 session 因此连茧,維持一個會話的核心就是客戶端的唯一標(biāo)識,即 session id
cookie數(shù)據(jù)存放在瀏覽器上巍糯,session數(shù)據(jù)存放在服務(wù)器上。一般把登陸信息用session保存客扎。 session會在一定時間內(nèi)保存在服務(wù)器上祟峦,當(dāng)訪問增多時,會占用服務(wù)器的性能徙鱼。
例子
在學(xué)校旁邊的一家面館宅楞,有消費三碗免費一碗的活動。然而一次性消費三碗的可能性很小袱吆,需要用某種方式來記錄顧客的消費狀態(tài)厌衙,這時就有兩種方案:
cookie方案: 發(fā)給顧客一張卡,上面記錄著消費量绞绒,一般還有個時限婶希。每次消費的時候顧客只要出示這張卡,則此次消費的狀態(tài)就被記錄下來了蓬衡。這就是在客戶端保持狀態(tài)喻杈。
session方案: 同樣發(fā)給顧客一張卡彤枢,但是卡上只有一個卡號,用來標(biāo)識用戶身份筒饰,其他什么都沒有缴啡。每次顧客去消費時,只要出示這張卡瓷们,則店員就在店里的記錄本上找到卡號所對應(yīng)的記錄业栅,并且添加一些消費信息。這就是在服務(wù)器端保存狀態(tài)的方法谬晕。由于session方案需要session id(卡號)將客戶端和服務(wù)器端連接起來碘裕,所以一般session機制需要借助cookie來在客戶端保存session id肪凛。
當(dāng)然除了cookie還有一種url重寫的方法也能夠?qū)崿F(xiàn)session機制仲智。
還有一種url重寫的技術(shù),就是把session id直接附加在URL路徑的后面先匪。還有一種表單隱藏字段技術(shù)夕玩,就是服務(wù)器會自動修改表單你弦,添加一個隱藏字段,以便在表單提交時能夠把session id傳遞回服務(wù)器燎孟。 session id一旦被攻擊者而已獲得禽作,攻擊者可以偽裝成請求者對服務(wù)器發(fā)起請求。