1. 程式人生 > >token與cookie區別

token與cookie區別

概述

HTTP是一個“無狀態”協議,這意味著Web應用程式伺服器在響應客戶端請求時不會將多個請求連結到任何一個客戶端。然而,許多Web應用程式的安全和正常執行都取決於系統能夠區分使用者並識別使用者及其許可權。

這就需要一些機制來為一個HTTP請求提供狀態。它們使站點能夠在會話期間對各使用者做出適當的響應,從而保持跟蹤使用者在應用程式中的活動(請求和響應)。

伺服器如何驗證token

客戶訪問服務端,服務端給客戶端一個包含少量客戶資訊的字串,如包含客戶ID,當客戶在未退出出瀏覽器的情況下再次訪問伺服器時,需要攜帶token訪問,這時伺服器端解碼token,同伺服器資料庫中比對資訊 同cookie不同的是伺服器不需要建立額外的session來儲存驗證資訊來和cookie呼應,減少了額外儲存壓力

cookie和token

基於cookie的身份驗證

cookie是源自站點並由瀏覽器儲存在客戶計算機上的簡單檔案。它們通常包含一個名稱和一個值,用於將客戶端標識為對站點具有特定許可權的特定使用者。

cookie與源域相連線的方式可以確保僅源域能夠訪問其中儲存的資訊。第三方伺服器既不能讀取也不能更改使用者計算機上該域的cookie內容。

網景公司的前僱員於1993年發明了cookie。

基於cookie的驗證是有狀態的,就是說驗證或者會話資訊必須同時在客戶端和服務端儲存。這個資訊服務端一般在資料庫中記錄,而前端會儲存在cookie中。

驗證的一般流程如下:

  1. 使用者輸入登陸憑據;
  2. 伺服器驗證憑據是否正確,並建立會話,然後把會話資料儲存在資料庫中;
  3. 具有會話id的cookie被放置在使用者瀏覽器中;
  4. 在後續請求中,伺服器會根據資料庫驗證會話id,如果驗證通過,則繼續處理;
  5. 一旦使用者登出,服務端和客戶端同時銷燬該會話。

基於token的身份驗證

隨著單頁面應用程式的流行,以及Web API和物聯網的興起,基於token的身份機制越來越被大家廣泛採用。

當討論基於token的身份驗證時,一般都是說的JSON Web Tokens(JWT)。雖然有著很多不同的方式實現token,但是JWT已經成為了事實上的標準,所以後面會將JWT和token混用。

基於token的驗證是無狀態的。伺服器不記錄哪些使用者已登陸或者已經發布了哪些JWT。對伺服器的每個請求都需要帶上驗證請求的token。該標記既可以加在header中,可以在POST請求的主體中傳送,也可以作為查詢引數傳送。

工作流程如下:

  1. 使用者輸入登陸憑據;
  2. 伺服器驗證憑據是否正確,然後返回一個經過簽名的token;
  3. 客戶端負責儲存token,可以存在local storage,或者cookie中;
  4. 對伺服器的請求帶上這個token;
  5. 伺服器對JWT進行解碼,如果token有效,則處理該請求;
  6. 一旦使用者登出,客戶端銷燬token。

token相對cookie的優勢

無狀態

基於token的驗證是無狀態的,這也許是它相對cookie來說最大的優點。後端服務不需要記錄token。每個令牌都是獨立的,包括檢查其有效性所需的所有資料,並通過宣告傳達使用者資訊。

伺服器唯一的工作就是在成功的登陸請求上籤署token,並驗證傳入的token是否有效。

防跨站請求偽造(CSRF)

舉個CSRF攻擊的例子,在網頁中有這樣的一個連結
![](http://bank.com?withdraw=1000&to=tom),假設你已經通過銀行的驗證並且cookie中存在驗證資訊,同時銀行網站沒有CSRF保護。一旦使用者點了這個圖片,就很有可能從銀行向tom這個人轉1000塊錢。

但是如果銀行網站使用了token作為驗證手段,攻擊者將無法通過上面的連結轉走你的錢。(因為攻擊者無法獲取正確的token)

多站點使用

cookie繫結到單個域。foo.com域產生的cookie無法被bar.com域讀取。使用token就沒有這樣的問題。這對於需要向多個服務獲取授權的單頁面應用程式尤其有用。

使用token,使得用從myapp.com獲取的授權向myservice1.com和myservice2.com獲取服務成為可能。

支援移動平臺

好的API可以同時支援瀏覽器,iOS和Android等移動平臺。然而,在移動平臺上,cookie是不被支援的。

效能

一次網路往返時間(通過資料庫查詢session資訊)總比做一次HMACSHA256計算的Token驗證和解析要費時得多。

相關推薦

tokencookie區別

概述 HTTP是一個“無狀態”協議,這意味著Web應用程式伺服器在響應客戶端請求時不會將多個請求連結到任何一個客戶端。然而,許多Web應用程式的安全和正常執行都取決於系統能夠區分使用者並識別使用者及其許可權。 這就需要一些機制來為一個HTTP請求提供狀態。它們使站點能夠在

sessioncookie區別

轉載自:http://blog.csdn.net/axin66ok/article/details/6175522 1.cookie 是一種傳送到客戶瀏覽器的文字串控制代碼,並儲存在客戶機硬碟上,可以用來在某個WEB站點會話間持久的保持資料。 2.session其實指的

面試題12——SessionCookie區別

cookie 和session 的區別: 1、cookie資料存放在客戶的瀏覽器上,session資料放在伺服器上。 2、cookie不是很安全,別人可以分析存放在本地的COOKIE並進行COOKIE欺騙    考慮到安全應當使用session。 3、session會在

SessionCookie區別聯絡

關於Cookie Cookie,也稱為HTTPcookie,Web cookie或瀏覽器cookie,是從網站傳送到伺服器並存儲在使用者的Web瀏覽器中的一小部分資料。Cookie用於向網站建立者傳送關於上次訪問網站時使用者以前的活動的資訊。會話是兩個通訊裝置(如使用者計算

session理解總結【session原理、應用、cookie區別

session原理 session也是一種記錄瀏覽器狀態的機制,但與cookie不同的是,session是儲存在伺服器中。 由於http是無狀態協議,當伺服器儲存了多個使用者的session資料時,如何確認http請求對應伺服器上哪一條session,相當關鍵。這也是session原理的核心內容。 解決方法

JWTcookietoken區別,django中使用

一. cookie A) cookie如何認證 1. 使用者輸入使用者名稱與密碼,傳送給伺服器。 2. 伺服器驗證使用者名稱和密碼,正確的就建立一個會話(session),同時會把這個會話的ID儲存到客戶端瀏覽器中,因為儲存的地方是瀏覽器的cookie,所以這種認證方式叫做基於cookie

Cookiesession區別

瀏覽器 cookie 通信設備 session與Cookie的區別此文章 來自烏龜運維wuguiyunwei.comQQ群:602183872主要區別:Cookie,也稱為HTTP cookie,Web cookie或瀏覽器cookie,是從網站發送到服務器並存儲在用戶的Web瀏覽器中的一小部分數

sessionCookie區別

瀏覽器 cookie 通信設備 Cookie與session的區別此文章 來自烏龜運維wuguiyunwei.comQQ群:602183872主要區別:Cookie,也稱為HTTP cookie,Web cookie或瀏覽器cookie,是從網站發送到服務器並存儲在用戶的Web瀏覽器中的一小部分數

PHP中常用的超全局變量 表單中get和post提交方式的區別 sessioncookie區別 GD庫是做什麽用的

屬性 過程 生成報表 用戶訪問 服務器 接收 file pla request PHP中常用的超全局變量 $_GET ----->get傳送方式$_POST ----->post傳送方式$_REQUEST ----->可以接收到get和post兩種方式的值

php session機制cookie機制以及聯系區別

標識 級別 聯系 是什麽 生命周期 技術 路徑 多次 瀏覽器中 session與cookie是在做項目中很常用的會話技術,session與cookie也是面試中被問到頻率最高的問題,有一次我去面試,面試官就懟著我session與cookie一直問(頭都大了),下面總結了一些

SessionCookie區別聯系

系統 數據 如果 多層 刪除 默認 重新 sqli nbsp 描述兩個事情的不同,一般先從概念入手,然後分析他們是怎麽生成、怎麽使用以及怎麽消亡的: 1、Cookie僅由客戶端生成、管理並使用,PHP只是發出指令要求客戶端如何生成Cookie、何時過期等,但是客戶端不一

TokenCookie和Session的區別

最簡 對稱 請求 應用 一次 會有 程序 隨機 uid 服務器端不存token,而存設備ID、登錄時時間戳、userID等。 服務器端使用存儲信息生成token,與會話token比較完成鑒權。 在做接口測試時,經常會碰到請求參數為token的類型,但是可能大部分測試人員

html5的web存儲cookie區別

try-catch 本地 一個 script div 用戶 比較 document 限制 以下從3個方面進行比較: 1,容量:cookie只有4KB,localStorage和sessionStorage最大容量5M 2,是否會攜帶到ajax中:cookie由每個對服務器的

Html5中本地儲存概念是什麼,有什麼優點,cookie有什麼區別

html5中的Web Storage包括了兩種儲存方式:sessionStorage和localStorage。 sessionStorage用於本地儲存一個會話(session)中的資料,這些資料只有在同一個會話中的頁面才能訪問並且當會話結束後資料也隨之銷燬。因此sessionStorage不是一種持久化

Session Cookie區別聯絡總結

Session與Cookie區別 Cookie和Session都是會話技術,Cookie是執行在客戶端,Session是執行在伺服器端。 Cookie有安全隱患,通過攔截或本地檔案找得到你的cookie後可以進行攻擊。Cookie不是很安全,別人可以分析存放在本地的cookie並

Session,TokenCookie相關區別

1. 為什麼要有session的出現? 答:是由於網路中http協議造成的,因為http本身是無狀態協議,這樣,無法確定你的本次請求和上次請求是不是你傳送的。如果要進行類似論壇登陸相關的操作,就實現不了了。 2. session生成方式?答:瀏覽器第一次訪問伺服器,伺服器會建立一個ses

淺談SessionCookie區別聯系

本地 默認 urlencode 目錄 value key 攻擊 學校 會話 一、Session的概念 Session 是存放在服務器端的,類似於Session結構來存放用戶數據,當瀏覽器 第一次發送請求時,服務器自動生成了一個Session和一個Session ID用來唯一

token放在cookie中和直接使用cookie有什麼區別

看了幾個問題和答案感覺自己明白了一些 token,放在cookie中,還是和直接使用cookie一樣,所以僅僅將token放在cookie是不行的; 需要在頁面上有一個地方存放token,以表單提交的方式提供給後臺,後臺可以校驗表單中的token和cookie中的token是否一致,一致則繼

TokenCookie和Session的區別--學習筆記

https://blog.csdn.net/qq_29347295/article/details/78112951 在做介面測試時,經常會碰到請求引數為token的型別,但是可能大部分測試人員對token,cookie,session的區別還是一知半解。為此我查閱大量的資料做了如下總結。&nb

Token Session 相關區別

1. 為什麼要有session的出現? 答:是由於網路中http協議造成的,因為http本身是無狀態協議,這樣,無法確定你的本次請求和上次請求是不是你傳送的。如果要進行類似論壇登陸相關的操作,就實現不了了。 2. session生成方式? 答:瀏覽器第一次訪問伺服器,伺服器