Cookies是壹種會話對象。但是,cookie不占用服務器資源,而是存儲在客戶服務內存或壹個cookie文本文件中;而“會話”會占用服務器資源。所以盡量不要用Session,用Cookies。但是我們普遍認為cookies不靠譜,session靠譜,但是目前很多知名網站也在用cookies。有時,為了解決cookie被禁用後的頁面處理問題,通常會采用url重寫技術,調用會話中大量有用的方法,從會話中獲取數據並放入頁面。
Cookies和會話應用場景:
Cookies的安全性能壹直備受爭議。雖然Cookies存儲在這臺機器上,但是它們的信息是完全可見的,並且很容易在本地編輯,這通常會導致許多安全問題。所以Cookies到底該不該用,怎麽用,是有底線需要給的。
我們先來看看網站的敏感數據。
登錄驗證信息。通常,session ("logon") = true或false。
用戶的各種隱私信息,如姓名等。在某些情況下,需要保存在會話中。
需要在頁面之間傳遞的內容信息,比如調查,需要分成幾個步驟。每個步驟的信息都保存在會話中,並最終更新到數據庫中。
當然,還會有更多。下面是壹些典型的。
如果壹個人被撤回,不想接觸會話,因為他認為如果用戶不小心關閉了瀏覽器,所有之前保存的數據都會丟失。於是,出於好心,他決定用Cookies來存儲所有這些使用Session的地方,這是完全可行的,基本操作也和使用Session壹模壹樣。那麽,下面是對以上三個典型例子的分析。
顯然,只要壹個故意的非法入侵者知道網站驗證登錄信息的Session變量是什麽,他就可以提前編輯cookie,放入cookie目錄中,從而順利通過驗證。這很可怕嗎?
cookie是完全可見的,即使程序員設置了cookie的生命周期(比如只在用戶會話期間有效),它們也是不安全的。假設用戶忘記關閉瀏覽器或者有惡意的人把用戶打昏了,那麽用戶的損失將是巨大的。
像上面這種,很容易被別人竊取重要的私人信息。但是,還有壹個問題,就是信息量可能過大,使得Cookies的文件大小急劇增加。這不是用戶希望看到的。
很明顯,餅幹不是那麽好的餅幹。但是,Cookies的存在當然有它的道理。它給了程序員更大的空間來發揮他們的編程才能。所以,使用Cookies是有底線的。總的來說,這個底線遵循以下原則。
不要保存私人信息。
對於任何重要的數據,最好以加密的形式保存數據(最簡單的可以是URLEncode,當然也可以是完美的可逆加密方式。可惜最好不要用md5加密)。
是否保存登錄信息由用戶選擇。
不要對超過10K的數據使用Cookies。
不要用Cookies玩讓客戶驚喜的小遊戲。
然而,cookie最典型的應用是:
(1)判斷用戶是否登錄過網站,以便下次直接登錄。如果我們刪除cookie,我們必須在每次登錄時重新填寫登錄信息。
(B):另壹個重要的應用是購物車中的類的處理和設計。用戶可能會在壹段時間內在同壹網站的不同頁面上選擇不同的產品。他們可以將所有這些信息寫入cookie,並在最終付款時從cookie中提取出來。當然,我們需要考慮安全性和性能問題。