天天看點

token cookie session的差別token cookie session的差別

token cookie session的差別

大家好,我是酷酷的韓~

token cookie session的差別token cookie session的差別

一.Cookie簡介

cookie是一個非常具體的東西,指的是浏覽器裡能永久存儲的一種資料,僅僅是浏覽器實作的一種資料存儲功能。cokkie由伺服器生成,發送給浏覽器,浏覽器把cookie以kv形式儲存到某個目錄下的文本檔案内,下一次請求同一網站時會把該cookie發送給伺服器,由于cookie是存儲在用戶端的,是以浏覽器加入了一些限制確定cookie不會被惡意使用,同時不會占用太多磁盤空間,是以每個域的cookie數量是有限的。

二.Session

session從字面上講,就是會話,比如談戀愛,你怎麼知道這個女生就是自己的女朋友呢,肯定是有某種特征。session類似的道理,伺服器要知道目前發請求給自己的是誰。為了區分, 伺服器給用戶端配置設定不同的’身份标志’用戶端每次向伺服器發送請求時都帶着标志,伺服器就知道請求來自誰了。

儲存方式,大多采用cookie方式。

伺服器使用session把使用者的資訊臨時儲存在了伺服器上,使用者離開網站後session會被摧毀,這種使用者資訊存儲方式相對cookie更安全。

有一個缺陷:如果做了負載均衡,下一個操作請求到另一台伺服器時 session會丢失。

三.Token

1.引入:

token是在用戶端頻繁像伺服器端請求資料,服務端頻繁的查資料庫,查詢使用者名密碼進行比對,判斷是否正确,并作出相應的提示,在此背景下,token便來了~

2.定義:

token是服務端生成的一串字元串,以做用戶端進行請求的一個令牌,第一次登陸後,伺服器生成token并将token傳回給用戶端進行存儲,以後用戶端隻需要帶着這個token進行請求資料,不需要帶上使用者名密碼等。最簡單的token組成:uuid,time(目前時間戳),sign(簽名,token前幾位+鹽以雜湊演算法)

3.目的:

減少資料庫查詢,減輕伺服器壓力。

4.流程:

1.用戶端使用使用者名和密碼登入

2.服務端收到請求後,驗證使用者名和密碼,驗證成功後,服務端傳回一個token傳回給用戶端。

3.用戶端收到token,存儲起來,cookie或localstorage裡

4.用戶端每次像伺服器請求時帶着token

5.服務端接收請求後,驗證token,驗證成功,就傳回給用戶端資料。

6.我這裡是在登入時生成token後存入redis,内容為使用者的重要資訊,并加密,每次請求帶着token。

四.三者的差別:

1.cookie和session的差別:

(1)cookie資料放在用戶端上, session資料放在伺服器上。

(2)cookie不是很安全,容易被發現,進行惡意操作。此時session占優

(3)session會再一定時間内儲存在伺服器上,通路增多高并發時,會比較占用服務儲存器性能, 此時cookie占優。

(4)單個cookie儲存的資料不能超過4k,很多浏覽器都限制一個站點最多 儲存20個cookie

(5)登入等重要資訊存入session,其他資訊如果需要保留,可以放入cookie

2.session和token的差別:

(1)作為身份認證,token安全性比session好,因為每個請求都有簽名,還能防止監聽以及重播攻擊,session必須靠鍊路層來保障通訊安全、

(2)session是一種http存儲機制,為無狀态的http提供持久機制。隻是簡單的把user資訊存儲到session裡,因為sid的不可預測性,暫時認為是安全的。

(3)token提供的是認證和授權,token是唯一的,适用于第三方共享。

3.token和cookie的差別:

(1)token和cookie一樣都是首次登陸時,由伺服器下發,都是當互動時進行校驗的功能,都是為無狀态的HTTP提供持久機制

(2)token存在哪都行,localstorage或者cookie

(3)token隻需要告訴伺服器它是誰就可以。

(4)token不需要去查你是誰,不要儲存會話,當使用者退出的時候,cookie和伺服器的session都會登出,token隻需要登出浏覽器資訊。

(5)token由于伺服器不存儲會話,是以可擴充性強,token還可用于app中。

無論什麼時候,做什麼事情,要思考。------酷酷的韓