Cookie和Session的區別

session

簡單的說,當你登陸一個網站的時候,如果web服務器端使用的是session,那麼所有的數據都保存在服務器上,客戶端每次請求服務器的時候會發送當前會話sessionid,服務器根據當前sessionid判斷相應的用戶數據標誌,以確定用戶是否登陸或具有某種權限。由於數據是存儲在服務器上面,所以你不能僞造。

cookie

sessionid是服務器和客戶端連接時候隨機分配的,如果瀏覽器使用的是cookie,那麼所有數據都保存在瀏覽器端,比如你登陸以後,服務器設置了cookie用戶名,那麼當你再次請求服務器的時候,瀏覽器會將用戶名一塊發送給服務器,這些變量有一定的特殊標記。cookie的過期時間是可以設置的,如果不設置,則瀏覽器關掉就消失了,是存儲在內存當中的,否則就是按照我們設置的時間來存儲在硬盤上的,當過期後自動清除,比方說我們開機關機關閉再打開瀏覽器後他都會還存在,前者稱之爲Session cookie 又叫 transient cookie,後者稱之爲Persistent cookie 又叫 permenent cookie。

如果你能夠截獲某個用戶的cookie變量,然後僞造一個數據包發送過去,那麼服務器還是 認爲你是合法的。所以,使用cookie被攻擊的可能性比較大。

如果cookie設置了有效值,那麼cookie會保存到客戶端的硬盤上,下次在訪問網站的時候,瀏覽器先檢查有沒有cookie,如果有的話,讀取cookie,然後發送給服務器。

所以你在機器上面保存了某個論壇cookie,有效期是一年,如果有人入侵你的機器,將你的cookie拷走,放在他機器下面,那麼他登陸該網站的時候就是用你的身份登陸的。當然,僞造的時候需要注意,直接copy cookie文件到 cookie目錄,瀏覽器是不認的,他有一個index.dat文件,存儲了 cookie文件的建立時間,以及是否有修改,所以你必須先要有該網站的 cookie文件,並且要從保證時間上騙過瀏覽器

兩個都可以用來存私密的東西,session過期與否,取決於服務器的設定。cookie過期與否,可以在cookie生成的時候設置進去。

區別對比:

(1)cookie數據存放在客戶的瀏覽器上,session數據放在服務器上
(2)cookie不是很安全,別人可以分析存放在本地的COOKIE並進行COOKIE欺騙,如果主要考慮到安全應當使用session
(3)session會在一定時間內保存在服務器上。當訪問增多,會比較佔用你服務器的性能,如果主要考慮到減輕服務器性能方面,應當使用COOKIE
(4)單個cookie在客戶端的限制是4K,就是說一個站點在客戶端存放的COOKIE不能4K。
(5)所以:將登陸信息等重要信息存放爲SESSION;其他信息如果需要保留,可以放在COOKIE中

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章