Skip to main content

Session 與 Cookie 的基本概念

  • 定義:Cookie 是一種儲存在用戶瀏覽器中的小型文字資料(通常大小限制在 4KB 以內),由伺服器發送到瀏覽器,用來儲存用戶相關的資訊。

  • 用途

    • 追蹤用戶行為(例如廣告追蹤)。

    • 儲存用戶偏好設定(例如網站語言選擇)。

    • 支援身份驗證(例如儲存一個標記用戶身份的 token)。

  • 工作原理

    • 當用戶訪問網站時,伺服器會在 HTTP 回應中包含 Set-Cookie 標頭,瀏覽器會將 Cookie 儲存。

    • 之後的每次請求,瀏覽器會自動將相關 Cookie 附加在 HTTP 請求的 Cookie 標頭中,發送到伺服器。

  • 屬性

    • Expires 或 Max-Age:決定 Cookie 的有效期限。

    • HttpOnly:防止 JavaScript 直接存取,增加安全性。

    • Secure:僅在 HTTPS 連線中傳輸。

    • SameSite:控制跨站請求是否攜帶 Cookie(例如 Strict、Lax 或 None)。

Session 是什麼?

  • 定義:Session(會話)是一種伺服器端的機制,用來追蹤用戶在一段時間內的狀態。伺服器會為每個用戶分配一個唯一的 Session ID,並將相關資料儲存在伺服器上。

  • 用途

    • 管理用戶登錄狀態(例如記錄用戶是否已登入)。

    • 儲存臨時資料(例如購物車內容)。

  • 工作原理

    • 伺服器創建一個 Session 並生成一個唯一的 Session ID。

    • Session ID 通常透過 Cookie 傳送到用戶端,瀏覽器在後續請求中會帶上這個 Session ID。

    • 伺服器根據 Session ID 查找對應的 Session 資料(通常儲存在伺服器記憶體、資料庫或快取如 Redis 中)。

  • 特點

    • Session 資料儲存在伺服器端,安全性較高。

    • Session ID 通常透過 Cookie 傳遞,但也可以透過 URL 或其他方式(不過不常見)。


特性CookieSession
儲存位置用戶端(瀏覽器)伺服器端(資料儲存在伺服器)
資料內容儲存小型資料(例如 token、偏好設定)儲存用戶狀態(例如登錄資訊、購物車)
安全性較低,易被竄改(除非使用 HttpOnly 和 Secure)較高,資料儲存在伺服器,僅傳遞 Session ID
有效期限可設定長期有效(透過 Expires/Max-Age)通常短暫,伺服器可設定過期時間
大小限制通常限制在 4KB無嚴格大小限制(取決於伺服器儲存)
使用方式直接由瀏覽器管理,自動附加到請求伺服器根據 Session ID 查找資料

總結

  • Cookie 是儲存在瀏覽器的小型資料,適合儲存簡單資訊,並由瀏覽器自動管理。

  • Session 是伺服器端的狀態管理機制,透過 Session ID(通常儲存在 Cookie 中)與用戶端交互,適合處理敏感資料。