cookie的生命周期、訪問限制、作用域、prefixes


cookie的生命周期

cookie的生命周期可以通過兩種方式定義:

  • 會話期cookie是最簡單的cookie:瀏覽器關閉后會被自動刪除。會話期cookie不需要指定過期時間(Expires)或者有效期(Max-Age)。需要注意的是,有些瀏覽器提供了會話恢復功能,這種情況即使關閉了瀏覽器,會話期cookie也會被保留下來,這會導致cookie的生命周期無限期延長
  • 持久性cookie的生命周期取決於過期時間(Expires)或者有效期(Max-Age)指定的一段時間。
    • 當Cookie的過期時間被設定時,設定的日期和時間只與客戶端相關,而不是服務端。

限制訪問Cookie

  • Secure:標記為Secure的cookie通過被HTTPS協議加密過的請求發送給服務端。可以預防man-in-the-middle攻擊。
    • 從Chrome52和firefox 52開始,非Https的站點無法使用Cookie的Secure標記。
  • HttpOnly:JavaScript Document.cookie API無法訪問帶有HttpOnly屬性的cookie,此類cookie僅作用於服務器。此屬性有助於緩解跨站點腳本(XSS)攻擊。

Cookie的作用域

  • Domain:指定了哪些主機可以接受cookie。如果不指定,默認為origin,不包含子域名。如果指定了Domain,一般包含子域名。
    • 當前大多數瀏覽器遵循 RFC 6265,設置 Domain 時 不需要加前導點。瀏覽器不遵循該規范,則需要加前導點,例如:Domain=.mozilla.org
  • Path:指定了主機下的哪些路徑可以接受cookie。以"/"作為路徑分隔符,子路徑也會被匹配。
  • SameSite:允許服務器要求某個cookie在跨站請求時不會被發送,其中Site由可注冊域定義,從而可以組織跨站請求偽造攻擊(CSRF)。取值如下:
    • None:瀏覽器會在同站請求、跨站請求下繼續發送cookies,不區分大小寫。
    • Strict:瀏覽器只在訪問相同站點時發送cookie。
    • Lax:與Strict類似,但用戶從外部站點導航至URL時(例如通過鏈接)除外。在新版本瀏覽器中,為默認選項為默認選項,Same-site cookies 將會為一些跨站子請求保留,如圖片加載或者 frames 的調用,但只有當用戶從外部站點導航到URL時才會發送。如 link 鏈接。
      • 以前,SameSite如果沒有設置,默認行為等同於None,cookies會被包含在任何請求中,包括跨站請求。
      • 大多數主流瀏覽器正在將SameSite的默認值遷移到Lax,如果要指定cookie在同站、跨站請求都被發送,需要明確指定SameSite為None。
  • __Host-:如果cookie名稱具有此前綴,僅當它也用Secure屬性標記,是從安全源發送的,不包含Domain屬性,並將Path屬性設置為/時,它才在Set-Cookieheader中接受。這些cookie可以被視為"domain-locked"。
  • __Secure-:如果cookie明白包含此前綴,則僅當它也用Secure屬性標記,是從安全源發送的,它才在Set-Cookieheader中接受。此前綴限制弱於__Host-前綴。
  • 帶有這些前綴的cookie,如果不符合其限制的會被瀏覽器拒絕。

參考:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Cookies

關聯cookie知識點:Cookie的HttpOnly、secure、domain屬性


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM