理解Cookie和Session
阿新 • • 發佈:2018-08-26
傳輸 存在 常見 一致性 訪問服務器 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