Session是什麼?它與Cookie有什麼區別?

琉憶光年發表於2022-02-19

你好,是我琉憶。

今天我們講一講Session與Cookie的區別

1、Session物件

上一節簡單介紹了Cookie,接下來簡單介紹Session。Session和Cookie都是會話管理技術的一種。可能你會奇怪記住使用者的資訊有Cookie就夠了,為什麼還需要Session?那麼我們帶著這個疑問一起來看看Session,以及對比兩者的區別。

2、什麼是Session?

Session的翻譯有:一場; 一節; 一段時間; (法庭的)開庭,開庭期; (議會等的)會議,會期;學年; (酒吧中)演奏會(尤指演奏愛爾蘭音樂)等等多種意思。一般我們拿來指代“會議”或者“會期”的意思。但是實際我們說的時候都統一用英文名稱來稱呼這種技術,它和Cookie一樣都算是計算機術語。

Session物件儲存特定使用者會話所需的屬性及配置資訊。這樣,當使用者在應用程式的Web頁之間跳轉時,儲存在Session物件中的變數將不會丟失,而是在整個使用者會話中一直存在下去。當使用者請求來自應用程式的 Web頁時,如果該使用者還沒有會話,則Web伺服器將自動建立一個 Session物件。當會話過期或被放棄後,伺服器將終止該會話。Session 物件最常見的一個用法就是儲存使用者的首選項。例如,如果使用者指明不喜歡檢視圖形,就可以將該資訊儲存在Session物件中。

當使用者登入或訪問一些初始頁面時,伺服器會為客戶端分配一個 SessionID。SessionID 是一個加密的隨機數字,在 Session 的生命週期中儲存在客戶端。它可以儲存在使用者機器的 Cookie 中,也可以通過 URL 在網路中進行傳輸。使用者通過 SessionID 可以註冊一些特殊的變數,稱為會話變數,這些變數的資料儲存在伺服器端。在一次特定的網站連線中,如果客戶端可以通過 Cookie 或 URL 找到SessionID,那麼伺服器就可以根據客戶端傳來的 SessionID 訪問會話儲存在伺服器端的會話變數。Session 的生命週期只在一次特定的網站連線中有效,當關閉瀏覽器後,Session 會自動失效,之前註冊的會話變數也不能再使用。

【如果你還沒有關注我的話,可以點點關注,下次更新精彩博文我通知你。】

3、為什麼需要Session

需要Session的主要原因是它儲存更安全,一般使用者的登入狀態都是使用Session來存,這樣在每個頁面之間切換時,我們都可以追蹤到當前使用者的資訊,顯示使用者的登入狀態。那麼為什麼Session儲存更安全呢?原因是因為它的檔案儲存在伺服器端,使用者是沒有許可權操作伺服器的,除了伺服器管理員有許可權操作外。這樣就可以避免非法使用者竊取Session中的資料,從而保證了資料的安全性。反而客戶端的電腦有被黑客入侵竊取檔案的風險,或者是別的使用者使用該客戶端電腦時,直接竊取Cookie檔案的風險,導致資料洩露的問題。

4、Session使用在哪些場合?

由於Session資料是儲存在伺服器端的,安全性比Cookie要高。那麼資料安全性要求比較高,比較私密的情況下都可以使用Session。

那麼一般我們會用Session儲存使用者的狀態,方便在頁面之間切換時依舊顯示登入狀態。還可以作為快取,快取使用者購物車資料。為什麼購物車的資料不適用Cookie呢?原因很簡單,如果用Cookie實現購物車的儲存功能,當使用者在A電腦放了3件商品到購物車中,使用者在A電腦看購物車時3件商品都是可以看到的。但是當使用者在B電腦登入賬號檢視購物車時,會發現購物車中一件商品都沒有。如果使用Session就不存在這種問題。那麼為什麼會出現這種情況呢?原因就在於儲存資料的方式不同!首先Cookie是儲存資料在客戶端,Session是儲存資料在服務端。那麼當使用者在A電腦儲存資料到購物車時,如果存到Cookie中,就相當於把資料儲存到了A電腦中,在B電腦自然讀取不到該Cookie的資料。反而Session儲存商品在伺服器時,無論你換哪臺電腦,都是可以直接從伺服器獲取該使用者的資訊展示的。

所以綜合下來,總結就是Cookie儲存資料在本地,安全性要求不高、不要求資料共享都可以使用它;Session儲存資料在伺服器,資料安全性要求高、需要共享資料,則可以選擇Session。

5、Cookie和Seesion有什麼區別?

簡單介紹完Cookie和Session之後,我相信你一定有很多疑問,Cookie和Session到底有什麼區別?我們簡單從多個角度來進行對比。對比結果如下:

那麼對比下來,最關鍵的是,如果儲存的資料安全性要求比較高,比較私密,那麼資料就儲存在Session中,如果安全性要求不那麼高就儲存在Cookie中。原因是Cookie儲存在本地,黑客可以在通訊過程中竊取Cookie解密檢視儲存資訊。如果資訊儲存在Session中,Session的資料是快取在伺服器端的,黑客是沒有許可權操作伺服器,對Session檔案進行破解的,只能獲取到SessionID。而SessionID是服務端程式獲取Session資料的唯一標識。

6、我寫的書開始預售了!

最近正在寫一本《ASP.NET Web動態網站》開發的書,預計2月底寫完,敬請期待~

預售網址:http://www.71muke.com/course/info/99

更多程式設計知識獲取,可以關注公眾號:琉憶程式設計庫。

相關文章