cookie和session——HTTP狀態信息存儲

首先,HTTP協議是一種無狀態的協議,也就是說web瀏覽器與服務器間不會建立一個長久的連接,對於事物處理沒有記憶的能力,那麼在使用過程中可能會一些不便。比如說打開淘寶的頁面,不可能每添加一個商品就要輸入一遍賬號及密碼。所以我們需要把狀態信息存儲起來以方便後面的使用

cookie和session都是用來保存狀態信息的,都是保持客戶端狀態的機制,都是爲解決HTTP無狀態的問題做出的努力

請求頭Cookie:常用來表示請求者身份
響應頭Set-Cookie:設置和頁面相關聯的cookie
服務端爲每一個登錄的客戶端在服務器主機上創建一個session(會話),會話中描述客戶端的信息,將session保存在數據庫,通過Set-Cookie將session id【身份標識】以及重要信息返回給客戶端,客戶端將其保存在cookie文件中,下次請求服務端時直接從cookie文件讀取信息,通過Cookie傳遞給服務端。即使禁用了cookie,session機制也不會失效

Cookie與session區別:

session是服務端爲每一客戶端單獨創建的會話,保存在服務端
Cookie是服務端通過Set-Cookie響應給客戶端的信息,保存在客戶端

Cookie作用:

記錄用戶ID、用戶密碼、用戶瀏覽過的記錄、但不會記錄瀏覽器的設置

Cookie的理解:
  • 不止一個
  • 保存在客戶端,按照在客戶端中的存儲位置分爲內存Cookie、硬盤Cookie
  • HTTP中Cookie明文傳送、HTTPS中密文傳送
  • 有些Cookie在用戶退出會話時刪除,有效保護隱私
  • cookie並不安全,別人會分析存在本地的cookie並進行cookie欺騙
  • 單個cookie保存數據不能超過4k,且很多瀏覽器限制一個站點最多保存20個cookie
session的理解
  • session的生存週期默認是30分鐘
  • 保存在服務器上
  • 當訪問增多時比較佔服務器的性能
cookie的基本屬性:
  • domain:可以訪問該cookie的域名,如爲google.com,那麼所有以此結尾的域名都可以訪問
  • path:cookie的使用路徑,
  • httponly:一旦設置,通過js腳本無法讀取到cookie信息,可以有效防止XSS攻擊,增加安全性
  • secure:該cookie是否使用安全協議傳輸,如HTTPS就是安全的,在網絡上傳輸數據前會爲其加密
  • expires:生存週期,默認是暫時存在的,即瀏覽器會話期間
怎麼提高cookie的安全性
  1. 對保存在cookie中的敏感信息進行加密
  2. 設置httponly屬性爲true
  3. 設置secure屬性爲true
  4. 爲cookie設置有效期
  5. 給cookie加個時間戳、IP戳,讓cookie在同個IP下多久失效
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章