關于cookie和session
使用者資訊通常都是存儲在伺服器端的,用戶端的cookie存一個key,伺服器端通過這個key查找對應的緩存找到之前的登入資訊。
輕量的方案還有一個做法是将登入資訊存儲到cookie中,不過這些資訊不應該包含敏感資料,比如使用者密碼,因為cookie是明文的。
同時為了防止有人僞造,一般會再對這些資訊做一次摘要加密算法,然後也放到cookie中,伺服器通過判斷摘要加密串來識别資訊是否是伺服器寫入的。
當然你的加密算法肯定需要保密,一般常用的辦法是 将登入資訊序列化,然後加上一個字元串(需要嚴格保密,别人如果知道這個就可以僞造cookie了),再做MD5或SHA。
二者的定義:
當你在浏覽網站的時候,WEB 伺服器會先送一小小資料放在你的計算機上,Cookie 會幫你在網站上所打的文字或是一些選擇,
都紀錄下來。當下次你再光臨同一個網站,WEB 伺服器會先看看有沒有它上次留下的 Cookie 資料,有的話,就會依據 Cookie
裡的内容來判斷使用者,送出特定的網頁内容給你。 Cookie 的使用很普遍,許多有提供個人化服務的網站,都是利用 Cookie
來辨認使用者,以友善送出使用者量身定做的内容,像是 Web 接口的免費 email 網站,都要用到 Cookie。
具體來說cookie機制采用的是在用戶端保持狀态的方案,而session機制采用的是在伺服器端保持狀态的方案。
同時我們也看到,由于采用伺服器端保持狀态的方案在用戶端也需要儲存一個辨別,是以session機制可能需要借助于cookie機制
來達到儲存辨別的目的,但實際上它還有其他選擇。
cookie機制。正統的cookie分發是通過擴充HTTP協定來實作的,伺服器通過在HTTP的響應頭中加上一行特殊的訓示以提示
浏覽器按照訓示生成相應的cookie。然而純粹的用戶端腳本如JavaScript或者VBScript也可以生成cookie。而cookie的使用
是由浏覽器按照一定的原則在背景自動發送給伺服器的。浏覽器檢查所有存儲的cookie,如果某個cookie所聲明的作用範圍
大于等于将要請求的資源所在的位置,則把該cookie附在請求資源的HTTP請求頭上發送給伺服器。
cookie的内容主要包括:名字,值,過期時間,路徑和域。路徑與域一起構成cookie的作用範圍。若不設定過期時間,則表示這
個cookie的生命期為浏覽器會話期間,關閉浏覽器視窗,cookie就消失。這種生命期為浏覽器會話期的cookie被稱為會話cookie。
會話cookie一般不存儲在硬碟上而是儲存在記憶體裡,當然這種行為并不是規範規定的。若設定了過期時間,浏覽器就會把cookie
儲存到硬碟上,關閉後再次打開浏覽器,這些cookie仍然有效直到超過設定的過期時間。存儲在硬碟上的cookie可以在不同的浏
覽器程序間共享,比如兩個IE視窗。而對于儲存在記憶體裡的cookie,不同的浏覽器有不同的處理方式
session機制。session機制是一種伺服器端的機制,伺服器使用一種類似于散清單的結構(也可能就是使用散清單)來儲存資訊。
當程式需要為某個用戶端的請求建立一個session時,伺服器首先檢查這個用戶端的請求裡是否已包含了一個session辨別
(稱為session id),如果已包含則說明以前已經為此用戶端建立過session,伺服器就按照session id把這個session檢索出來
使用(檢索不到,會建立一個),如果用戶端請求不包含session id,則為此用戶端建立一個session并且生成一個與此session相
關聯的session id,session id的值應該是一個既不會重複,又不容易被找到規律以仿造的字元串,這個session id将被在本次響應
中傳回給用戶端儲存。儲存這個session id的方式可以采用cookie,這樣在互動過程中浏覽器可以自動的按照規則把這個辨別發送給
伺服器。一般這個cookie的名字都是類似于SEEESIONID。但cookie可以被人為的禁止,則必須有其他機制以便在cookie被禁止時
仍然能夠把session id傳遞回伺服器。
Cookie和session這個得分開來說
兩個都可以用來存私密的東西,同樣也都有有效期的說法。
差別在于。
session是放在伺服器上的,過期與否取決于服務期的設定,cookie是存在用戶端的,過去與否可以在cookie生成的時候設定進去。
1、cookie資料存放在客戶的浏覽器上,
session資料放在伺服器上
2、cookie不是很安全,别人可以分析存放在本地的COOKIE并進行COOKIE欺騙
考慮到安全應當使用session
3、session會在一定時間内儲存在伺服器上。當通路增多,會比較占用你伺服器的性能
考慮到減輕伺服器性能方面,應當使用COOKIE
4、單個cookie在用戶端的限制是3K,就是說一個站點在用戶端存放的COOKIE不能3K。
5、是以個人建議:
将登陸資訊等重要資訊存放為SESSION
其他資訊如果需要保留,可以放在COOKIE中