中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么理解會話管理中的cookie、session和JWT

發布時間:2021-12-17 16:16:53 來源:億速云 閱讀:174 作者:柒染 欄目:大數據

本篇文章為大家展示了怎么理解會話管理中的cookie、session和JWT,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

存儲位置

三者都是應用在web中對http無狀態協議的補充,達到狀態保持的目的

cookie:cookie中的信息是以鍵值對的形式儲存在瀏覽器中,而且在瀏覽器中可以直接看到數據。下圖為safari的cookie截圖:

怎么理解會話管理中的cookie、session和JWT

session:session存儲在服務器中,然后發送一個cookie存儲在瀏覽器中,cookie中存儲的是session_id,之后每次請求服務器通過session_id可以獲取對應的session信息

JWT:JWT存儲在瀏覽器的storage或者cookie中。由服務器產生加密的json數據包括:header,payload和signature三部分組成。header中通常來說由token的生成算法和類型組成;payload中則用來保存相關的狀態信息;signature部分由header,payload,secret_key三部分加密生成。 注意,不要在JWT的payload或header中放置敏感信息,除非它們是加密的。下圖為官網的截圖:

怎么理解會話管理中的cookie、session和JWT

優缺點

cookie:

  • 優點:

  1. 結構簡單。cookie是一種基于文本的輕量結構,包含簡單的鍵值對。

  2. 數據持久。雖然客戶端計算機上cookie的持續時間取決于客戶端上的cookie過期處理和用戶干預,cookie通常是客戶端上持續時間最長的數據保留形式。

  • 缺點:

  1. 大小受到限制。大多數瀏覽器對 cookie 的大小有 4096 字節的限制,盡管在當今新的瀏覽器和客戶端設備版本中,支持 8192 字節的 cookie 大小已愈發常見。

  2. 非常不安全。cookie將數據裸露在瀏覽器中,這樣大大增大了數據被盜取的風險,所有我們不應該將中要的數據放在cookie中,或者將數據加密處理。

  3. 容易被csrf攻擊。可以設置csrf_token來避免攻擊。

session

  • 優點:

  1. session的信息存儲在服務端,相比于cookie就在一定程度上加大了數據的安全性;相比于jwt方便進行管理,也就是說當用戶登錄和主動注銷,只需要添加刪除對應的session就可以,這樣管理起來很方便。

  • 缺點:

  1. session存儲在服務端,這就增大了服務器的開銷,當用戶多的情況下,服務器性能會大大降低。

  2. 因為是基于cookie來進行用戶識別的, cookie如果被截獲,用戶就會很容易受到跨站請求偽造的攻擊。

  3. 用戶認證之后,服務端做認證記錄,如果認證的記錄被保存在內存中的話,這意味著用戶下次請求還必須要請求在這臺服務器上,這樣才能拿到授權的資源,這樣在分布式的應用上,會限制負載均衡和集群水平拓展的能力。

JWT

  • 優點:

  1. 因為json的通用性,jwt可以支持跨語言請求,像JAVA,JavaScript,PHP等很多語言都可以使用。

  2. 因為有了payload部分,所以JWT可以在自身存儲一些其他業務邏輯所必要的非敏感信息。

  3. 便于傳輸,JWT的構成非常簡單,字節占用很小,所以它是非常便于傳輸的。

  4. 不需要在服務端保存會話信息, 利于服務器橫向拓展。

  • 缺點:

  1. 登錄狀態信息續簽問題。比如設置token的有效期為一個小時,那么一個小時后,如果用戶仍然在這個web應用上,這個時候當然不能指望用戶再登錄一次。目前可用的解決辦法是在每次用戶發出請求都返回一個新的token,前端再用這個新的token來替代舊的,這樣每一次請求都會刷新token的有效期。但是這樣,需要頻繁的生成token。另外一種方案是判斷還有多久這個token會過期,在token快要過期時,返回一個新的token。

  2. 用戶主動注銷。JWT并不支持用戶主動退出登錄,客戶端在別處使用token仍然可以正常訪問。為了支持注銷,我的解決方案是在注銷時將該token加入到服務器的redis黑名單中。

JWT與OAuth的區別

這兩個概念總有人用混淆,所以一起介紹了。

OAuth3是一種授權框架,用在使用第三方賬號登錄的情況(比如使用weibo, qq, github登錄某個app)
JWT是一種認證協議,用在前后端分離,需要簡單的對后臺API進行保護時使用。無論使用哪種方式切記用HTTPS來保證數據的安全性;

上述內容就是怎么理解會話管理中的cookie、session和JWT,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安宁市| 建德市| 类乌齐县| 鄂州市| 钦州市| 黎川县| 三河市| 凤阳县| 延寿县| 墨玉县| 吉水县| 乌鲁木齐县| 东方市| 新化县| 黄山市| 民丰县| 平阴县| 疏勒县| 安国市| 惠水县| 博野县| 丰县| 安远县| 祥云县| 青神县| 广平县| 阜城县| 包头市| 朝阳县| 昌黎县| 榆树市| 彩票| 元朗区| 绥江县| 西峡县| 通渭县| 清远市| 河北省| 房产| 老河口市| 宣化县|