關於Cookie的問題總結

能夠存儲的數據結構到底有哪些?

瀏覽器端:cookie,WebStorage(localStorage,sessionStorage),userData,indexedDB

服務器端 : session

什麼是cookie?它存放在哪?

維基上給出的解釋是:Cookie(複數形態Cookies),又稱爲“小甜餅”。類型爲“小型文本文件”,指某些網站爲了辨別用戶身份而儲存在用戶本地終端(Client Side)上的數據(通常經過加密

其他得解釋大同小異,cookie 就是瀏覽器儲存在用戶電腦上的一小段文本文件。一個 Web 頁面或服務器告知瀏覽器按照一定規範來儲存這些信息,並在隨後的請求中將這些信息發送至服務器,Web 服務器就可以使用這些信息來識別不同的用戶。大多數需要登錄的網站在用戶驗證成功之後都會設置一個 cookie,只要這個 cookie 存在並可以,用戶就可以自由瀏覽這個網站的任意頁面。再次說明,cookie 只包含數據,就其本身而言並不有害

由上所述,Cookie應該是存放在客戶端的

cookie和session的關係?

  • cookie是客戶端存放着,是爲了方便記錄特定用戶一些特定操作而存在的;而session是在服務器端的,是一種保存上下文機制,針對的每一個用戶
  • session中保存的是對象,cookie中保存的是字符串。 
  • session不能區分路徑,同一個用戶在訪問一個網站期間,所有的session在任何一個地方都可以訪問到。而cookie中如果設置了路徑參數,那麼同一個網站中不同路徑下的cookie互相是訪問不到的。
  • session需要藉助cookie才能正常工作,就是說session是依託於cookie的

其他詳細的差異與實現,文章結尾由參考的完章,裏面有詳細的解釋

localstorge和sessionstorge的關係?

localStorage 是 HTML5 標準中新加入的技術,它並不是什麼劃時代的新東西。早在 IE 6 時代,就有一個叫 userData 的東西用於本地存儲,而當時考慮到瀏覽器兼容性,更通用的方案是使用 Flash。localStorage 的數據需要手動清除

sessionStorage 與 localStorage 的接口類似,但保存數據的生命週期與 localStorage 不同。做過後端開發的同學應該知道 Session 這個詞的意思,直譯過來是“會話”。而 sessionStorage 是一個前端的概念,它只是可以將一部分數據在當前會話中保存下來,刷新頁面數據依舊存在。當頁面關閉後或者關閉瀏覽器後,sessionStorage 中的數據就會被清空。

兩者分關係就是他們都是瀏覽器上的存儲方式,你可以直接去調用他們,還有一點就是它們存儲的都是字符串,不可以存儲json對象

userData

IE瀏覽器可以使用userData來存儲數據,容量可達到640K,這種方案是很可靠的,不需要安裝額外的插件。缺點:它僅在IE下有效。

indexedDB

IndexedDB 就是瀏覽器提供的本地數據庫,它可以被網頁腳本創建和操作。IndexedDB 允許儲存大量數據,提供查找接口,還能建立索引。這些都是 LocalStorage 所不具備的。就數據庫類型而言,IndexedDB 不屬於關係型數據庫(不支持 SQL 查詢語句),更接近 NoSQL 數據庫。

三者的異同?

特性 Cookie localStorage sessionStorage
數據的生命期 一般由服務器生成,可設置失效時間。如果在瀏覽器端生成Cookie,默認是關閉瀏覽器後失效 除非被清除,否則永久保存 僅在當前會話下有效,關閉頁面或瀏覽器後被清除
存放數據大小 4K左右 一般爲5MB
與服務器端通信 每次都會攜帶在HTTP頭中,如果使用cookie保存過多數據會帶來性能問題 僅在客戶端(即瀏覽器)中保存,不參與和服務器的通信
易用性 需要程序員自己封裝,源生的Cookie接口不友好 源生接口可以接受,亦可再次封裝來對Object和Array有更好的支持

  cookie是網站爲了標示用戶身份而儲存在用戶本地終端(Client Side)上的數據(通常經過加密)。
  cookie數據始終在同源的http請求中攜帶(即使不需要),記會在瀏覽器和服務器間來回傳遞。
  sessionStorage和localStorage不會自動把數據發給服務器,僅在本地保存。

cookie的安全性問題?

cookie的最大安全問題就是XSS攻擊 ,主要方式就是汪接口裏注入js代碼,防範的方法基本上還是網站開發人員的事,一般的方法就是提高驗證的可靠性,設置cookie的http只讀屬性等,具體的xss盜取Cooke的過程可以參考本文底部的引用文章;

參考文獻:

cookie相關:http://bubkoo.com/2014/04/21/http-cookies-explained/

cookie與session對比相關:https://juejin.im/entry/5766c29d6be3ff006a31b84e

http://www.cnblogs.com/xulb597/archive/2012/07/02/2573252.html

localStorage文章:https://jerryzou.com/posts/cookie-and-web-storage/

Xss獲取cookie:https://blog.csdn.net/qq_27552077/article/details/61671671

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章