Cookie、token、session的區別是什么?



背景:

最近在總結一些容易理解混淆的概念,之前面試的時候提到過,我覺得也說不清楚,這兩天項目做接口測試發現用的cookie而不是之前的token,於是總結一下,便於以后用到的時候再閱讀以及分享給需要的人。后期如果發現總結不對會持續更新

從安全性優先級來說:

1、優先級

Cookie<session<token

2、 安全性

Cookie:

①cookie不是很安全,別人可以分析存放在本地的cookie並進行cookie欺騙,考慮到安全應當使用session

②HTTP是一種無狀態協議,服務器沒有辦法單單從網絡連接上面知道訪問者的身份,為了解決這個問題,就誕生了Cookie

Cookie實際上是一小段的文本信息。客戶端請求服務器,如果服務器需要記錄該用戶狀態,就使用response向客戶端瀏覽器頒發一個Cookie

客戶端瀏覽器會把Cookie保存起來。當瀏覽器再請求該網站時,瀏覽器把請求的網址連同該Cookie一同提交給服務器。服務器檢查該Cookie,以此來辨認用戶狀態。服務器還可以根據需要修改Cookie的內容。

 

session:

①     session會在一定時間內保存在服務器上。當訪問增多,會比較占用你服務器的性能,考慮到減輕服務器性能方面,應當使用cookie

②     關閉瀏覽器不會關閉session,它具失效日期,失效后服務器認為客戶端停止了活動,並刪除session以節省空間

 

Token:

①  作為身份認證 token安全性比session好,因為每個請求都有簽名還能防止監聽以及重放攻擊

②  Oauth token提供的是認證和授權,認證針對用戶,授權針對app

③  token的生成一般是采用uuid保證唯一性,當用戶登錄時為其生成唯一的token,存儲一般保存在數據庫中。token過期時間采用把token二次保存在cookie或session里面,根據cookie和session的過期時間去維護token的過期時間

 

開發過程舉例:

案例一:

項目中我們的用戶數據可能需要和第三方共享,或允許第三方調用我們的API則用token

案例二:

公司內部的網站,自己的App,就可以用cookie、session

一般來說我們可以將登錄信息放在session,其他信息保存在cookie

案例三:

觀察微信、支付寶登錄接口用的就是token

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM