1. 程式人生 > >淺談 session 會話的原理

淺談 session 會話的原理

ESS 瀏覽器 Nid 了解 網絡 block 隨機 狀態 原理

先談 cookie

  網絡傳輸基於的Http協議,是無狀態的協議,即每次連接斷開後再去連接,服務器是無法判斷此次連接的客戶端是誰。

  如果每次數據傳輸都需要進行連接和斷開,那造成的開銷是很巨大的。

  為了解決這個問題,cookie就應運而生,當用戶登陸成功,服務器會在返回響應數據的同時也攜帶著cookie給到客戶端,

  之後客戶端每次發起請求只要攜帶著這個cookie,那就免去登錄的步驟。cookie是保存在客戶端的數據。

  這確實極大改善了網絡傳輸的效率。當時由於cookie是保存在瀏覽器客戶端的,所以也很容易被提取,這在安全方面存在隱患。

再談session

session的實現需要依賴於cookie,其本質也是通過以cookie的方式向客戶端發送隨機字符串,每次客戶端發起請求時只要攜帶

該隨機字符串便可很容易進行驗證。下面大概寫下整個session過程的原理。

  1. 用戶發出登錄請求
  2. 判斷賬戶密碼是否正確
  3. 如正確,則返回數據並在cookie中寫隨機字符串(sessionID),並且在服務端以{隨機字符串:{‘k‘:‘v‘}}的形式存儲用戶相關數據
  4. 下次同個客戶發送請求,攜帶cookie(包含sessionID)
  5. 服務端會判斷cookie是否包含sessionID,如有再去服務器內存中查詢該sessionID 是否有對應的數據,如果有,則說明是登錄過的用戶,返回數據。

  session是保存在服務端的數據。

  由此可見,session是不會向客戶端發送敏感信息的,隨機字符串即使被人竊取,也無法簡單在客戶端被惡意行為偽造請求。

淺談 session 會話的原理