1. 程式人生 > >理解Cookie和Session

理解Cookie和Session

傳輸 存在 常見 一致性 訪問服務器 dom 所有 查看 登陸

理解Cookie

Cookie的作用

用戶通過Http協議服務器,服務器會將一些Key/Value對返回給客戶端瀏覽器,用戶下次訪問時數據又被完整的帶回服務器。具體可以利用Cookie來做如:

  • 在客戶端上保存用戶數據,如用戶名稱、角色等等,起到簡單的緩存作用;
  • 保存用戶的登陸狀態,用戶成功登陸後,服務器生成特定的cookie返回給客戶端,客戶端下次訪問該域名下的任何頁面,將cookie的信息發送給服務器來認證用戶;
Cookie的屬性

常見屬性如:

  • Expires 過期時間
  • Domain 對應的域名
  • Path 生成Cookie的路徑
    可以通過name=value的方式來添加cookie屬性,如添加用戶名 username="zhansan"
弊端
  • 瀏覽器對Cookie的大小和數量有一定限制
  • 如果Cookie很多,客戶端和服務端每次交互都得攜帶,增加了數據傳輸量
  • Cookie的信息可以在瀏覽器F12直接查看、修改、添加,有一定的安全風險,所有在使用時敏感數據一定要加密。

理解Session

服務器通過指定的屬性名稱來獲取Session,默認屬性名稱為SESSIONID, 瀏覽器不支持Cookie時,通過路徑參數傳遞,支持的話會將其放到Cookie屬性中。服務端獲取到SessionId(客戶端第一次訪問服務器時生成,每個客戶端是唯一的)後生成HttpSession對象,這個對象會被服務端緩存直到過期回收。

Session的作用
  • 用Session將信息保存在服務端,避免了直接使用Cookie的信息暴露
  • 客戶端只需要一個SessionId, 減少了傳輸數據量
限制
  • 分布一致性,使用Session會帶來分布式問題,當有多臺服務端時,需要保障Session一致,可以通過分布式Session框架來解決,確保session同步
  • CSRF攻擊,可以在session中添加token來防範

理解Cookie和Session