cookie,session,token的定義及區別

參考了不少文章總結的。

一、cookie(儲存在用戶本地終端上的數據)

服務器生成,發送給瀏覽器,瀏覽器保存,下次請求同一網站再發送給服務器。web

二、session(會話)

a、表明服務器與瀏覽器的一次會話過程,這個過程是連續的,也能夠時斷時續的。後端

b、cookie中存放着一個sessionID。請求時會發送這個ID。api

c、session由於請求(request對象)而產生。瀏覽器

d、session是一個容器,能夠存放會話過程當中的任何對象。安全

e、session的建立和使用總在服務端,而瀏覽器歷來都沒獲得過session對象。服務器

f、Session 是一種HTTP存儲機制,目的是爲無狀態的HTTP提供的持久機制。restful

三、token(「令牌」)

是用戶身份的驗證方式,最簡單的token組成:uid(用戶惟一的身份標識)、time(當前時間的時間戳)、sign(簽名)。cookie

四、cookie與session

a、cookie數據存放在客戶端上,session數據放在服務器上。session

b、cookie不是很安全,且保存數據有限。app

c、session必定時間內保存在服務器上。當訪問增多,佔用服務器性能

五、session與token

做爲身份認證 token安全性比session好

App一般用restful api跟server打交道。Rest是stateless的,也就是app不須要像browser那樣用cookie來保存session,所以用session token來標示本身就夠了,session/state由api server的邏輯處理。 若是你的後端不是stateless的rest api, 那麼你可能須要在app裏保存session.能夠在app裏嵌入webkit,用一個隱藏的browser來管理cookie session.

Session 認證只是簡單的把User 信息存儲到Session 裏,由於SID 的不可預測性,暫且認爲是安全的。這是一種認證手段。 而Token ,若是指的是OAuth Token 或相似的機制的話,提供的是 認證 和 受權 ,認證是針對用戶,受權是針對App 。其目的是讓 某App有權利訪問 某用戶 的信息。這裏的 Token是惟一的。不能夠轉移到其它 App上,也不能夠轉到其它 用戶 上。 轉過來講Session 。Session只提供一種簡單的認證,即有此 SID,即認爲有此 User的所有權利。是須要嚴格保密的,這個數據應該只保存在站方,不該該共享給其它網站或者第三方App。 因此簡單來講,若是你的用戶數據可能須要和第三方共享,或者容許第三方調用 API 接口,用 Token 。若是永遠只是本身的網站,本身的 App,用什麼就無所謂了。

 

個人理解:
cookie存在瀏覽器,不安全;
session存在服務器,可能影響性能;
token身份認證安全性好,是惟一的。
若存在第三方,用token,不用session。

相關文章
相關標籤/搜索