session和cookie的區別是什麼

1、cookie數據存放在客戶的瀏覽器上,session數據放在服務器上 。  
2、cookie不是很安全,別人可以分析存放在本地的COOKIE並進行COOKIE欺騙,考慮到安全應當使用session    

3、session會在一定時間內保存在服務器上。當訪問增多,會比較佔用你服務器的性能。考慮到減輕服務器性能方面,應當使用COOKIE。

4、單個cookie在客戶端的限制是4K,就是說一個站點在客戶端存放的COOKIE不能4K。很多瀏覽器都限制一個站點最多保存20個cookie。(300個的限制我沒聽說
5、所以個人建議:
   將登陸信息等重要信息存放爲SESSION
   其他信息如果需要保留,可以放在COOKIE中


爲什麼會有cookie呢,大家都知道,http是無狀態的協議,客戶每次讀取web頁面時,服務器都打開新的會話,而且服務器也不會自動維護客戶的上下文信息,那麼要怎麼才能實現網上商店中的購物車呢,session就是一種保存上下文信息的機制,它是針對每一個用戶的,變量的值保存在服務器端,通過   SessionID來區分不同的客戶,session是以cookie或URL重寫爲基礎的,默認使用cookie來實現,系統會創造一個名爲   JSESSIONID的輸出cookie,我們叫做session   cookie,以區別persistent   cookies,也就是我們通常所說的cookie,注意session   cookie是存儲於瀏覽器內存中的,並不是寫到硬盤上的,這也就是我們剛纔看到的JSESSIONID,我們通常情是看不到JSESSIONID的,但是當我們把瀏覽器的cookie禁止後,web服務器會採用URL重寫的方式傳遞Sessionid,我們就可以在地址欄看到sessionid=KWJHUG6JJM65HS2K6之類的字符串。

       明白了原理,我們就可以很容易的分辨出persistent   cookies和session   cookie的區別了,網上那些關於兩者安全性的討論也就一目瞭然了,session   cookie針對某一次會話而言,會話結束session   cookie也就隨着消失了,而persistent   cookie只是存在於客戶端硬盤上的一段文本(通常是加密的),而且可能會遭到cookie欺騙以及針對cookie的跨站腳本攻擊,自然不如   session   cookie安全了。    

        通常session   cookie是不能跨窗口使用的,當你新開了一個瀏覽器窗口進入相同頁面時,系統會賦予你一個新的sessionid,這樣我們信息共享的目的就達不到了,此時我們可以先把sessionid保存在persistent   cookie中,然後在新窗口中讀出來,就可以得到上一個窗口SessionID了,這樣通過session   cookie和persistent   cookie的結合我們就實現了跨窗口的session   tracking(會話跟蹤)。    
        在一些web開發的書中,往往只是簡單的把Session和cookie作爲兩種並列的http傳送信息的方式,session   cookies位於服務器端,persistent   cookie位於客戶端,可是session又是以cookie爲基礎的,明白的兩者之間的聯繫和區別,我們就不難選擇合適的技術來開發web   service了。 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章