“黑客”入門學習之“Cookie技術詳解”

“黑客”入門學習之“Cookie技術詳解”

"重放攻擊"大家應該聽說過吧?重放攻擊時黑客常用的攻擊方式之一,攻擊者發送一個目的主機已接收過的包,來達到欺騙系統的目的,主要用於身份認證過程,破壞認證的正確性。這種攻擊會不斷惡意或欺詐性地重複一個有效的數據傳輸,重放攻擊可以由發起者,也可以由攔截並重發該數據的敵方進行。攻擊者利用網絡監聽或者其他方式盜取認證憑據,之後再把它重新發給認證服務器。

重放攻擊監聽http數據傳輸的截獲的敏感數據大多數就是存放在Cookie中的數據。在web安全中的通過其他方式(非網絡監聽)盜取Cookie提交Cookie也是一種重放攻擊。所以可以看出"Cookie"這個“東東”好像很不安全。

那麼今天就以本篇文章詳細給大家介紹一下Cookie是什麼?Cookie基本原理與實現?Cookie到底存在哪些安全隱患,我們該如何防禦,有沒有其他技術替代方案?

一、Cookie是什麼?

官方定義:Cookie,有時也用其複數形式Cookies,指某些網站為了辨別用戶身份、進行session跟蹤而儲存在用戶本地終端上的數據(通常經過加密)。

通俗理解:Cookie就是服務器端為了保存某些數據,或實現某些必要的功能,當用戶訪問服務器時,從服務器回傳到客戶端的一個或多個數據,這些數據因設置的保存時間不同,故保存在瀏覽器內存中或寫入用戶PC的硬盤當中,當下次用戶再次訪問服務器端時,則帶著這些文件去與服務器端進行聯繫,這些數據或寫入硬盤當中的數據文件就是Cookie。

詳細簡介:

眾所周知,Web協議(也就是HTTP)是一個無狀態的協議(HTTP1.0)。一個Web應用由很多個Web頁面組成,每個頁面都有唯一的URL來定義。用戶在瀏覽器的地址欄輸入頁面的URL,瀏覽器就會向Web Server去發送請求。如下圖,瀏覽器向Web服務器發送了兩個請求,申請了兩個頁面。這兩個頁面的請求是分別使用了兩個單獨的HTTP連接。所謂無狀態的協議也就是表現在這裡,瀏覽器和Web服務器會在第一個請求完成以後關閉連接通道,在第二個請求的時候重新建立連接。Web服務器並不區分哪個請求來自哪個客戶端,對所有的請求都一視同仁,都是單獨的連接。這樣的方式大大區別於傳統的(Client/Server)C/S結構,在那樣的應用中,客戶端和服務器端會建立一個長時間的專用的連接通道。正是因為有了無狀態的特性,每個連接資源能夠很快被其他客戶端所重用,一臺Web服務器才能夠同時服務於成千上萬的客戶端。

“黑客”入門學習之“Cookie技術詳解”

但是我們通常的應用是有狀態的。先不用提不同應用之間的SSO,在同一個應用中也需要保存用戶的登錄身份信息。例如用戶在訪問頁面1的時候進行了登錄,但是剛才也提到,客戶端的每個請求都是單獨的連接,當客戶再次訪問頁面2的時候,如何才能告訴Web服務器,客戶剛才已經登錄過了呢?瀏覽器和服務器之間有約定:通過使用cookie技術來維護應用的狀態。Cookie是可以被Web服務器設置的字符串,並且可以保存在瀏覽器中。如下圖所示,當瀏覽器訪問了頁面1時,web服務器設置了一個cookie,並將這個cookie和頁面1一起返回給瀏覽器,瀏覽器接到cookie之後,就會保存起來,在它訪問頁面2的時候會把這個cookie也帶上,Web服務器接到請求時也能讀出cookie的值,根據cookie值的內容就可以判斷和恢復一些用戶的信息狀態。

“黑客”入門學習之“Cookie技術詳解”

Cookie文件記錄了用戶的有關信息,如身份識別號碼ID、密碼、瀏覽過的網頁、停留的時間、用戶在Web站點購物的方式或用戶訪問該站點的次數等,當用戶再次鏈接Web服務器時,瀏覽器讀取Cookie信息並傳遞給Web站點。

Cookie文件信息片斷以"名/值"對(name-vaiuepairs)的形式儲存,一個"名/值"對僅僅是一條命名的數據。例如,訪問 www.goto.com網站,則該站點可能會在客戶端電腦上產生一個包含以下內容的Cookie文件:UserIDA9A3BECE0563982Dwww.goto.com/。goto.com在電腦上存入了一個單一的"名/值"對,其中的"名"是UserID,"值"是A9A3BECE0563982D。

Cookie文件的存放位置與操作系統和瀏覽器密切相關,這些文件在Windows機器裡叫做Cookie文件,在Macintosh機器裡叫做MagicCookie文件。對Windows和IE瀏覽器而言,Cookies文件的存放位置為:

“黑客”入門學習之“Cookie技術詳解”

Cookie的主要功能是實現用戶個人信息的記錄,它最根本的用途是幫助Web站點保存有關訪問者的信息。更概括地說,Cookie是一種保持Web應用程序連續性(即執行狀態管理)的方法。

HTTP協議是一種無狀態、無連接的協議,不能在服務器上保持一次會話的連續狀態信息。隨著WWW的不斷髮展,HTTP的無狀態性不能滿足某些應用的需求,給Web服務器和客戶端的操作帶來種種不便。在此背景下,提出HTTP的狀態管理機制———Cookie機制,它是對HTTP協議的一種補充,以保持服務器和客戶端的連續狀態。

二、Cookie技術的原理

以實例闡述技術原理:

假設一個用戶在進行網上購物

“黑客”入門學習之“Cookie技術詳解”

1) 假定用戶第一次訪問這個購物網站,用戶瀏覽器這邊有一個Cookie文件,裡面只有一行信息beay:8734,但是沒有任何與這個購物信息有關的信息

2) 用戶開始使用常規的http請求消息來訪問,服務器收到訪問以後,發現這是一個新用戶,於是為這個用戶創建一個ID為1678,並把這個信息存儲在後端的數據庫中

3) 服務器收到請求後向瀏覽器發回響應消息,但是在響應消息裡面多了一行信息,就是Set-cookie: 1678,客戶瀏覽器收到響應信息後,把新增的Cookie信息添加到自己的Cookie文件中,意思是:我在這個網站中的ID是1678

4) 當用戶第二次再訪問這個網站的時候,請求信息中就會帶上自己的Cookie信息,服務器收到以後,通過Cookie信息發現是之前訪問過的用戶,於是做出Cookie-specific action,將http響應信息發回用戶瀏覽器

5) 一週以後再次訪問,依然會重複4的步驟

三、常見的Cookie 種類

1、Session cookie

也稱為內存cookie或者瞬時cookie,只存在用戶瀏覽站點時的內存中。當用戶關閉瀏覽器時,瀏覽器通常會刪除session cookies。不像其他cookies,session cookies沒有分配過期時間,作為session cookie瀏覽器會自己管理它。

2、持久性cookie

不像session cookie在瀏覽器關閉時就會過期那樣,持久性cookie是到一個特定日期過期或者過來一段時間過期。這就意味著,在cookie的整個生命週期(創建cookie時可以指定其生命週期),每次用戶訪問cookie所屬站點時,或者每次用戶在其他站點訪問cookie所屬站點的資源(例如廣告)時,cookie所攜帶的信息都會被髮送到服務端。

由於這個原因,持久性cookie有時被稱為追蹤cookie,因為廣告系統可以利用它記錄用戶在一段時間內的網頁瀏覽習慣信息。當然,使用它也有一些"正當"理由,例如保持用戶的登錄狀態,避免每次訪問的再次登錄。

如果過期時間到了,或者用戶手動刪除了,這種cookie會被重置。

3、安全cookie

安全cookie只能通過安全連接傳輸(例如,https)。不能通過非安全連接傳輸(例如,http)。這樣就不太可能被竊取。在cookie中設置一個Secure標誌就可以創建安全cookie。

4、HttpOnly cookie

HttpOnly cookie不能通過客戶端api獲取到。這種限制減少了通過(XSS)竊取cookie的風險。然而這種cookie也會受到跨站追蹤和跨站請求偽造攻擊。在cookie中添加HttpOnly可以創建這種cookie。

5、SameSite cookie

chrome51版本引入的一種新類型cookie,只有請求和站點是同源的,才會發送cookie到服務器。這種限制可以緩解攻擊,例如跨站請求偽造攻擊。在cookie中設置SameSite標識可以創建這種類型的cookie。

6、第三方cookie

正常情況下,cookie的域屬性和瀏覽器地址欄裡顯示的域是相同的。這種cookie稱為第一方cookie。然而第三方cookie不屬於瀏覽器地址欄顯示的域中。這種cookie通常出現在web頁面有外部站點內容時的情況中,例如廣告系統。這就提供了一個潛在的能力來追蹤用戶的瀏覽歷史,廣告系統通常會利用這個來給每個用戶推薦相關的廣告信息。

例如,假設用戶訪問了www.example.com,這個站點包含ad.foxytracking.com的廣告,當這個廣告加載時,會設置一個屬於廣告所在域(ad.foxytracking.com)的cookie。然後用戶訪問另一個站點,www.foo.com,這個站點也包含來自ad.foxytracking.com的廣告,這個廣告也會設置一個屬於ad.foxytracking.com域的cookie。最終,所有這些cookie會發送給廣告主,當用戶加載他們的廣告或者訪問他們的網站時。然後廣告主就可以利用這些cookie統計出用戶的瀏覽記錄,當然瀏覽記錄裡面的站點必須要包含廣告主的廣告。也就是廣告主可以利用這些cookie知道你訪問了那些包含他們廣告的站點。

7、Supercookie

supercookie是來自於頂級域名(例如.com)或者有公共後綴(例如.co.uk)的cookie。普通cookie是來自於一個特定域名,例如example.com。

supercookie是一個潛在的安全威脅,所以經常被瀏覽器默認禁止的。如果瀏覽器不禁止,控制惡意站點的攻擊者可以設置一個supercookie,干擾或者冒充合法的用戶向其他共享頂級域名或者公共後綴的站點的請求。例如,來自.com的supercookie可以惡意影響example.com的請求,即便這個cookie並不是來自於example.com。可以用來偽造登錄或者修改用戶信息。

幫助降低supercookie帶來的風險。公共後綴是一個跨廠商的倡議,目標是為了提供一個準確的最新的域名後綴列表。舊版本瀏覽器可能沒有一份最新的列表,會容易受到來自某些域的supercookie的威脅。

"supercookie"的術語有時會被用來描述某些不通過HTTP cookie的追蹤技術。兩個這樣的"supercookie"機制在2011年的微軟站點被發現了:機器標識碼cookie和ETag cookie,由於媒體的關注,微軟禁止了這樣的cookie。

8、Zombie cookie

zombie cookie是指被刪除後可以自動再創建的cookie。通過把cookie內容存儲在多個地方實現,例如flash的,H5的,其他客戶端甚至服務端位置。當缺失的cookie被檢測到,就會利用存儲在這些位置的數據重新創建cookie。

四、Cookie的安全性隱患

Cookie的目的是為用戶帶來方便,為網站帶來增值,一般情況下不會造成嚴重的安全威脅。Cookie文件不能作為代碼執行,也不會傳送病毒,它為用戶所專有並只能由創建它的服務器來讀取。另外,瀏覽器一般只允許存放300個Cookie,每個站點最多存放20個Cookie,每個Cookie的大小限制為4KB,因此,Cookie不會塞滿硬盤,更不會被用作"拒絕服務"攻擊手段。

但是,Cookie作為用戶身份的替代,其安全性有時決定了整個系統的安全性,Cookie的安全性問題不容忽視。

1、Cookie欺騙

Cookie記錄了用戶的帳戶ID、密碼之類的信息,通常使用MD5方法加密後在網上傳遞。經過加密處理後的信息即使被網絡上一些別有用心的人截獲也看不懂。然而,現在存在的問題是,截獲Cookie的人不需要知道這些字符串的含義,只要把別人的Cookie向服務器提交,並且能夠通過驗證,就可以冒充受害人的身份登陸網站,這種行為叫做Cookie欺騙。

非法用戶通過Cookie欺騙獲得相應的加密密鑰,從而訪問合法用戶的所有個性化信息,包括用戶的E-mail甚至帳戶信息,對個人信息造成嚴重危害。

2、Cookie截獲

Cookie以純文本的形式在瀏覽器和服務器之間傳送,很容易被他人非法截獲和利用。任何可以截獲Web通信的人都可以讀取Cookie。

Cookie被非法用戶截獲後,然後在其有效期內重放,則此非法用戶將享有合法用戶的權益。例如,對於在線閱讀,非法用戶可以不支付費用即可享受在線閱讀電子雜誌。

Cookie截獲的手段有以下一些。

(1) 用編程手段截獲Cookie

下面分析其手法,該方法分兩步完成:

步驟一:定位需要收集Cookie的網站,對其進行分析並構造URL。 首先打開要收集Cookie的網站,這裡假設是http://www.XXX.net,登陸網站輸入用戶名""(不含引號),對數據進行分析抓包,得到如下代碼:

“黑客”入門學習之“Cookie技術詳解”

將其中""更換為:

""再試,如果執行成功,就開始構造URL:

“黑客”入門學習之“Cookie技術詳解”

其中http://www.cbifamily.org/cbi.php是用戶能夠控制的某臺主機上的一個腳本。需要注意的是"%2b"為符號"+"的URL編碼,因為"+"將被作為空格處理。該URL即可在論壇中發佈,誘使別人點擊。

步驟二:編制收集Cookie的PHP腳本,並將其放到用戶可以控制的網站上,當不知情者點擊了構造的URL後可以執行該PHP代碼。該腳本的具體內容如下:

“黑客”入門學習之“Cookie技術詳解”

將這段代碼放到網絡裡,則能夠收集所有人的Cookie。如果一個論壇允許HTML代碼或者允許使用Flash標籤,就可以利用這些技術收集Cookie的代碼放到論壇裡,然後給帖子取一個吸引人的主題,寫上有趣的內容,很快就可收集到大量的Cookie。在論壇上,有許多人的密碼就是被這種方法盜走的。

(2) 利用Flash的代碼隱患截獲Cookie。

Flash中有一個getURL()函數。Flash可以利用這個函數自動打開指定的網頁,它可能把用戶引向一個包含惡意代碼的網站。例如,當用戶在電腦上欣賞Flash動畫時,動畫幀裡的代碼可能已經悄悄地連上網,並打開了一個極小的包含有特殊代碼的頁面,這個頁面可以收集Cookie、也可以做一些其他有害的事情。網站無法禁止Flash的這種作為,因為這是Flash文件的內部功能。

(3)Cookie洩漏網絡隱私

Cookie導致網絡隱私洩密的主要原因是:商業利益驅動。隨著電子商務的興起和互聯網上巨大商機的出現,一些網站和機構濫用Cookie,未經訪問者的許可,利用搜索引擎技術、數據挖掘技術甚至是網絡欺騙技術蒐集他人的個人資料,達到構建用戶數據庫、發送廣告等營利目的,造成用戶個人隱私的洩漏。"Cookie信息傳遞的開放性。Cookie文件具有特殊的傳遞流程 和文本特性,在服務器和客戶端之間傳送未經安全加密的Cook-ie文件,易導致個人信息的洩密。

五、防範Cookie洩密的安全措施

面對Cookie的安全問題,如何才能安全地應用Cookie呢?

(1)加強安全防範意識

Cookie相對來說是無害的,但它能用於跟蹤用戶,使用Cookie必須意識到其固有的安全弱點。

保存在Cookie中的內容,完全有可能是用戶的私人數據。例如,網站為了方便用戶,利用Cookie來保存會員的註冊信息:電子郵件地址、網站的用戶名、用戶密碼、信用卡號碼等,以便用戶以後登錄該網站時不用重新輸入這些數據。如果有人盜取了這樣的Cookie文件,他就可以冒充登錄網站,這將對用戶的個人信息安全構成不可預測的威脅。

因此,只在Cookie中保存一些不重要的數據,如用戶首選項或其它對應用程序沒有重大影響的信息。如果確實需要在Cook-ie中保存某些敏感信息,就要對其加密,以防被他人盜用。可以對Cookie的屬性進行設置, 使其只能在使用安全套接字層(SSL)的連接上傳輸。SSL並不能防止保存在用戶計算機上的Cookie被他人讀取或操作,但能防止Cookie在傳輸途中被他人截獲。

(2)配置安全的瀏覽器

IE和Netscape瀏覽器的工具欄裡,都有禁止Cookie的設置選項,都可以設置當某個站點要在用戶的計算機上創建Cookie時,是否給出提示。這樣用戶就可以選擇允許或拒絕創建Cook-ie。需要注意的是,某些網站的應用必須使用Cookie,簡單地禁止可能導致無法正常瀏覽此類網站。

使用IE6會更安全。最新的IE6提供了多種隱私保護功能,包括:查看網站的P3P隱私策略,以瞭解該網站如何使用個人可識別信息;通過Cookie隱私設置決定是否允許將網站的Cookie保存在計算機上;在訪問不符合隱私設置條件的站點時發出隱私警報。用戶可以有選擇性地設置Cookie。

(3)安裝Cookie管理工具

①CookieCrusher

LimitSoftware公司的Crusher適用於Netscape用戶,其功能有:管理計算機上已有的Cookie、設置禁止或允許創建Cookie的網站列表、在創建新Cookie與修改已經存在的Cookie時發出警告、禁止第三方網站Cookie、實時控制接受或拒絕來自站點的Cookie、記錄Cookie活動日誌、編輯Cookie等,並且在網上瀏覽時,程序獨創的分析功能可以自動確定網站要求創建的Cookie的目的,如:判斷網站是把Cookie用於存儲用戶輸入的資料還是準備利用Cookie跟蹤用戶的瀏覽習慣等。

②CookiePaI

除了瀏覽器能使用Cookie, 其它的互聯網軟件也可能使用,如郵件程序等。為了維護網絡隱私的安全,同時又能保證一些互聯網軟件正確地使用Cookie文件,可以安裝Kooka-burraSoftware公司的支持多種軟件的Cookie管理工具CookiePaI。它專門用於Cookie管理,支持用戶查看、刪除、編輯已經存在的Cookie,自動地實時控制是否接受Cookie,根據過期時間過濾Cookie,它還能夠記錄Cookie的活動,編輯拒絕或允許Cookie的網站列表。

(4)刪除內存中的Cookies

Cookie的信息並不都是以文件形式存放在硬盤中,還有部分信息保存在內存裡。這類Cookie通常是用戶在訪問某些特殊網站時,由系統自動在內存中生成的。一旦訪問者離開該網站,系統又自動將Cookie從內存中刪除。對此,需要藉助註冊表編輯器來修改系統設置,運行Regedit,找到如下鍵值:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Cur-rentversion\InternetSettings\Cache\SpeciaIPaths\Cookies,這是Cookies在內存中的鍵值,把這個鍵值刪除。右鍵單擊"Cook-ies",再單擊快捷菜單中的"刪除"命令確認刪除。

(5)使用AAS技術

2002年,美國IngrianNetworks公司發表了可以使Web站點 免受"CookiePoisoning(Cookie篡改)"攻擊的平臺"ActiveAppIi-cationSecurity(AAS)"。AAS平臺能對Cookie內部的重要信息進行加密處理,並附上電子簽名。Web服務器每次和客戶端進行通信時,將利用電子簽名對Cookie的內容進行確認。如果惡意用戶刪除了電子簽名或者更改了信息內容,將會使電子簽名和Cookie的內容無法再匹配。這時,AAS便會阻止這條Cookie並拒絕向Web站點返回信息。另外,該平臺還對Cookie內容進行了3DES加密,解密需要口令,通過這種方法安全地保存Cookie。WWW服務器和客戶端之間的通信還全部利用了SSL連接方式,以確保通信路由的安全。通過綜合運用電子簽名、加密、SSL連接等技術組成強效的安全方案,可以排除通信路由及數據存儲兩方面存在的脆弱性,杜絕對Cookie的篡改。

六、Cookie的替代方案

有些可以使用cookie實現的方案也可以使用其他機制實現。

1、JSON Web Tokens

(JWT)是一個自包含的信息包,可以用來存儲用戶標識以及認證信息。可以被用來代替session cookie。和cookie自動附加到每個HTTP請求的方式不一樣,JWTs必須被web應用明確指定附加到那個HTTP請求上。

2、HTTP 認證

HTTP包含基本認證以及摘要認證協議,利用這些協議只有在提供了正確的用戶名和密碼後才能訪問到web頁面。如果服務端需要類似的認證信息來確保web頁面的訪問權限,那麼瀏覽器每次頁面請求的時候都要發送這些認證信息。這些認證信息也可以用來追蹤用戶。

3、IP 地址

有些用戶可能會被基於訪問頁面的電腦IP地址追蹤過,服務端知道當前正在運行瀏覽器的電腦的IP地址,理論上可以對這個IP地址關聯一個用戶session。

然後IP地址通常不是一個可靠的追蹤session或者標識用戶的方法。許多電腦設計的時候就是為了讓一個單獨用戶使用的,例如辦公PC,家庭PC會在網絡地址轉換協議下共享一個公共的IP地址。而且某些系統,例如設計的時候就是為了保持匿名性的,利用IP地址追蹤用戶顯然是不合適的,也是不可能的。

4、URL 查詢字符串

一個更精確的技術是基於URL中嵌入信息。URL中的查詢字符串部分通常就是為了實現這個目的的,當然也可以使用其他部分。Java Servlet和PHP session機制都是使用這種機制,如果cookie被禁止了。這種方法由服務端在web頁面的所有鏈接中追加包含一個獨立session標識的查詢字符串組成。當用戶點擊了其中了一個鏈接,瀏覽器把查詢字符串傳給服務端,允許服務端識別用戶維持狀態。這些類型的查詢字符串非常像cookie,都包含任意的信息供服務端選擇,都會隨請求返回給服務端。然而其中還是有點不同的。由於查詢字符串是URL中的一部分,如果URL後面被重複發送了,那麼上面附加的相同信息將會被髮送到服務端,這樣可能會產生混亂。例如,如果用戶的偏好信息被放在了查詢字符串中,用戶把這個url通過郵件發給了另一個用戶,那麼這些偏好信息就會變成另一個用戶的。而且如果相同用戶從不同的源多次訪問相同的頁面,這樣不能確保每次使用相同的查詢字符串。例如,如果一個用戶第一次通過一個頁面的內部站點訪問了一個頁面,然後第二次又通過外部的搜索引擎訪問到這個頁面,這樣查詢字符串可能會不同。如果在這種情況下使用cookie,cookie可以是相同的。

使用查詢字符串其他缺點就是安全問題。在查詢字符串中存儲標識session的數據可以導致session固定攻擊,referer日誌攻擊以及其他安全漏洞。把session標識轉成HTTP cookie更安全。

5、隱藏的表單字段

另一種回話跟蹤是使用隱藏域的web表單。這個技術很像使用url查詢字符串去保存信息,也有一些優點和缺點。事實上,如果通過HTTP的GET方法處理表單,那麼這種技術就和使用URL查詢字符串類似,因為GET方法會把表單字段作為查詢字符串追加到URL後面。但是大部分表單都是通過HTTP的POST方法處理,這樣表單信息包括隱藏的字段都會在HTTP請求體中發送,這樣既不是URL中的一部分,也不是cookie的一部分。

從追蹤的角度來看這種方式有兩種好處。第一,把追蹤信息放在HTTP請求體中而不是URL中意味著它不會被普通用戶察覺。第二,當用戶複製URL的時候不會複製到session信息。

6、"window.name" DOM 屬性

所有的現代瀏覽器都可以通過js使用DOM屬性window.name存儲一個相當大的數據(2-23M)。這個數據可以用來代替session cookie也是可以跨域的。這個技術可以和JSON對象一起使用來存儲客戶端上的複雜session變量集合。

不足就是美國單獨的窗口或者tab頁剛開始打開的時候會有一個空的window.name屬性。而且,這個屬性可以用來追蹤不同站點的訪問者。

在某些方面,這種方法可能比cookie更加方便,因為它的內容不會像cookie那樣在每次請求的時候自動的發送給服務端,所以它不易收到網絡cookie嗅探攻擊。然而如果不採用特殊的方法保護數據,它很容易受到其他攻擊,因為數據可以被在同一個窗口或者tab中打開的其他站點獲取到。

7、廣告主標識碼

蘋果使用了追蹤技術稱為"廣告主標識碼"(IDFA)。這種技術會給每個購買蘋果產品的用戶分配一個唯一標識。這個唯一標識會被蘋果網絡廣告系統使用,來確定用戶正在查看或者回復的廣告。

8、ETag

因為瀏覽器會緩存ETags,然後在後續的請求相同資源時返回,追蹤服務器可以簡單的複製從瀏覽器接受的任意ETag來確保ETag長久留存(就像持久化cookie一樣)。增加緩存頭也可以加強ETag數據的保存。

在某些瀏覽器中可以通過清理緩存來清楚ETag數據。

9、web 存儲

一些web瀏覽器支持持久化機制,允許頁面本地存儲信息以後使用。

HTML5標準(絕大多數現代瀏覽器在某種程度上都支持)包含了一個Javascript API叫做:local storage和session storage。local storage的行為和持久化cookie類似,而session storage的行為和session cookie的行為類似,也就是session storage是綁定在一個單獨的tab或者窗口的生命週期中的(也就是頁面session),而session cookie是針對整個瀏覽器的。

IE支持在瀏覽器歷史中持久化信息,在瀏覽器的收藏夾中,以一個XML格式存儲,或者直接在頁面中存儲到硬盤。

一些web瀏覽器插件也包含持久化機制。例如Flash有Local shared object,Silverlight有 Isolated storage。

10、瀏覽器緩存

瀏覽器緩存也可以用來存儲信息,利用這些信息也可以用來追蹤用戶。這項技術利用的真相是當瀏覽器判斷出來緩存的已經是最新資源時可以利用緩存而不是重新從站點下載。

例如,一個站點託管了一個js文件,這個js文件可以給用戶指定一個唯一標識(例如,var userId = 3243242)。只要用戶訪問之後,每次用戶再訪問這個頁面時,這個文件都會從緩存中獲取而不是從服務端獲取。所以它的內容永遠不會變。


分享到:


相關文章: