如何保護隱私之瀏覽器Cookie的防范
在文章《如何保護隱私之關于軟件和服務的選擇》主要介紹了選擇"軟件"和"服務"的一般性原則。從《如何保護隱私之瀏覽器如何導致隱私泄漏》中我們了解了瀏覽器泄露隱私的幾個原因,那么具體的該如何保護隱私呢?本文將從瀏覽器Cookie的防范說起,助你加強隱私防護。
★什么是"cookie"?
本文所說的"cookie",指的是瀏覽器相關的cookie(也叫"HTTP cookie")。
瀏覽器cookie 的主要功能是:幫助網站保存一些小片段的信息。比如,你曾經在自己的瀏覽器上登錄過某個論壇,下次你再打開論壇的登錄頁面,你會發現用戶名已經幫你填好 了,你只需要輸入口令即可。那么,這個登錄頁面是如何知道你上次登錄用的賬戶名捏?奧妙就在于:該網站在你的瀏覽器端保存了一個 cookie,里面包含了你上次登錄使用的帳號名稱。
★Cookie 的技術實現
本章節面向懂技術的網友。不太懂技術的讀者,可以略過本節,直接進入下一章節,以免浪費時間。
◇網站如何設置cookie(寫操作)
1、當你在瀏覽器中點某個書簽、或者在瀏覽器地址欄輸入某個網址,瀏覽器會向對應的網站發起一個HTTP請求(術語是 HTTP Request)。
2、然后,網站的服務器收到這個HTTP請求之后,會把相應的內容(比如網頁、圖片、等)發回給瀏覽器(這稱為HTTP響應,術語是 HTTP Reponse)。
如果網站想設置cookie,就在發回的HTTPResponse中,包含一個設置cookie的指令。舉例如下:
上述這個例子中,設置了一個cookie。這個cookie的"名"是user;cookie的"值"是xxxx;cookie綁定的域名是www.example.com
3、瀏覽器在收到這個指令后,就會在你的電腦中存儲該cookie的信息。
◇網站如何獲取cookie(讀操作)
假設過了幾天之后,你再次訪問上述的www.example.com網站(在上次的訪問中,已經被設置過cookie了)。這時候,瀏覽器發現該網址已經有對應的cookie,就會把cookie的信息放在HTTP Request中,然后發送到網站服務器。具體的指令如下:
網站服務器拿到這個HTTPRequest之后,就可以通過上述信息,知道cookie的"名"和"值"。#p#
★Cookie的特點
◇存儲信息量小
cookie在洋文中的意思就是:小甜餅、曲奇餅。這個單詞其實已經暗示了cookie技術所能存儲的信息量是比較小滴。
從剛才的技術實現機制可以看出,cookie只能用來存儲純文本信息,而且存儲的內容不能太長——因為Cookie的讀寫指令受限于HTTPHeader的長度。
但是,cookie的信息量雖小,能耐卻很大哦。請看下面的例子。
舉例
比如某個網站上有很多網頁,每個網頁上有很多廣告。該網站想要收集:每一個訪客點擊了哪些廣告。
由于這些信息量比較大,直接存儲在cookie里可能放不下。所以,網站通常是在cookie中保存一個唯一的用戶標識。然后把用戶的點擊信息(包括在哪個時間點擊哪個廣告)都存儲在服務器上。
下次你再訪問該網站,網站先拿到cookie中的用戶標識,因為這個標識具有唯一性,那么就可以根據該標識,從網站服務器上查出該用戶的詳細信息。
◇綁定到域名和路徑
從上述的實現機制可以看出,cookie是跟HTTPRequest對應的網址(域名和路徑)相關的。
所以,不同域名的網站設置的cookie是互相獨立的(隔離的)。這一點由瀏覽器來保證,以確保安全性。
補充一下:cookie綁定的域名可以是小數點開頭的。舉例如下:
這個指令設置的cookie,可以被example.com的所有下級域名讀取(比如www.example.com或ftp.example.com)。#p#
★Cookie的類型
◇第一方CookieVS第三方Cookie
首先來說說"第一方"和"第三方"Cookie的區別,因為這跟隱私的關系比較密切。
要說清楚"第一方Cookie"和"第三方Cookie"的差別,俺來舉個例子。
舉例
打個比方,你上新浪去看新聞,并且新浪的網頁上嵌入了阿里巴巴的廣告(假設新浪的頁面和嵌入的廣告都會設置cookie)
那么,當你的瀏覽器加載完整個頁面之后,瀏覽器中就會同時存在新浪網站的cookie和阿里巴巴網站的cookie
這時候,新浪網站的cookie稱為"第一方Cookie"(因為你訪問的就是新浪嘛)
相對的,阿里巴巴的cookie稱為"第三方Cookie"(因為你訪問的是新浪,阿里巴巴只是不相干的第三方)
◇內存型VS文件型
根據存儲方式的不同,分為兩類:基于內存的Cookie和基于文件的Cookie。基于內存的cookie,當瀏覽器關閉之后,就消失了;而基于文件的cookie,即使瀏覽器關閉,依然存在于硬盤上。和隱私問題相關的cookie,主要是第二類(基于文件的Cookie)。#p#
★Cookie有啥正經用途?
今年的315晚會,央視猛烈抨擊了cookie的隱私問題,搞得好像cookie是洪水猛獸一般。CCAV對cookie的妖魔化宣傳,典型是用來嚇唬不懂技術的外行。
其實捏,cookie是有利有弊的。cookie之所以應用這么廣泛,因為它本身確實是很有用的。請看下面的幾個例子。
◇舉例1——自動登錄
目前很多基于Web的郵箱,都有自動登錄功能。也就是說,你第一次打開郵箱頁面的時候,需要輸入用戶名和口令;過幾天之后再來打開郵箱網頁,就不需要再次輸入用戶名和口令了(比如Gmail和Hotmail就是這樣的)。
為啥郵箱可以做到自動登錄,就是因為郵箱的網站在你的瀏覽器中保存了cookie,通過cookie中記錄的信息來表明你是已登錄用戶。
◇舉例2——提供個性化界面
比如某個論壇允許匿名用戶設置頁面的字體樣式和字體大小。
那么,該論壇就可以把匿名用戶設置的字體信息保存在cookie中,下次你用同一個瀏覽器訪問該論壇,自動就幫你把字體設置好了。
◇小結
一般來說,有正經用途的cookie,大都是"第一方Cookie";至于"第三方Cookie",大部分是用來收集廣告信息和用戶行為的。#p#
★Cookie如何泄漏隱私?
cookie就像一把雙刃劍,有很多用途,但也有弊端。一個主要的弊端就是隱私問題。
◇舉例1
假如你同時使用Google的Gmail和Google的搜索(很多Google用戶都這么干)。當你登錄過Gmail之后,cookie中會保存你的用戶信息(標識你是誰);即使你在Gmail中點了注銷(logout),cookie中還是會有你的用戶信息。
之后,你再用Google的搜索功能,那么Google就可以通過cookie中的信息,知道這些搜索請求是哪個Gmail用戶發起的。
可能有些同學會問,Gmail和Google搜索,是不同的域名,如何共享cookie捏?
俺前面有介紹過,某些cookie綁定的域名是以小數點開頭的,也就是說,這類cookie可以被所有下級域名讀取。
因為Gmail的域名是mail.google.com,而Google搜索的域名是www.google.com。所以這兩者都可以讀取綁定在.google.com的cookie!
注:俺拿Google來舉例是因為俺博客的讀者,大部分都是Google用戶。其實不光Google存在此問題,百度、騰訊、阿里巴巴、奇虎360、等等,都存在類似問題(這幾家都有搜索功能,也都有自己的一套用戶帳號體系)。
◇舉例2
很多網站會利用cookie來追蹤你訪問該網站的行為(包括你多久來一次,每次來經常看哪些頁面,每個頁面的停留時間)
這樣一來,網站方面就可以根據這些數據,分析你的個人的種種偏好(這就涉及到個人隱私)。
請注意:利用cookie收集個人隱私的把戲有很多,俺限于篇幅,僅列出上述兩例。#p#
★瀏覽器禁用Cookie的幾種方法
在本系列的前一篇,俺已經分析了:Firefox是主流瀏覽器中,隱私方面比較靠譜的(完全開源、沒有商業背景)。相對于Firefox,Chrome只是部分開源,而且Google的商業模式太依賴廣告,不會為隱私保護而得罪廣告主;至于IE,根本不開源,自身的安全性也不夠。
所以,本小節下面的內容,主要拿Firefox來說事兒。如果你是Chrome的粉絲,不想換Firefox,也沒關系。這兩款瀏覽器的某些功能大同小異,你可以參考本章節的介紹,然后在Chrome上依樣畫葫蘆。
◇只禁用第三方Cookie
前面說了,大部分"第三方Cookie"都不是干正經事兒的。所以,最簡單也是最寬松的設置,就是光禁用"第三方cookie"。
配置方法和截圖如下:
在Firefox主菜單點"工具",再點"選項"。在彈出的選項對話框中,選"隱私"標簽頁。
在界面的第一個下拉框中選擇"使用自定義歷史記錄設置"
選完下拉框,你會看到一個復選框叫"接受第三方Cookie",去掉這個復選框的打勾。
◇禁用所有cookie,但保留例外(白名單)
這種方式比前一種更嚴格。你只保留某些你信任的網站的cookie,其它網站統統禁用。
配置方法和截圖如下:
在Firefox主菜單點"工具",再點"選項"。在彈出的選項對話框中,選"隱私"標簽頁。
在界面的第一個下拉框中選擇"使用自定義歷史記錄設置"
選完下拉框,你會看到一個復選框叫"接受來自網站的 Cookie",去掉這個復選框的打勾。
然后到該復選框右側,點"例外"按鈕,把你信任的網站域名輸入進去。
◇始終用隱私瀏覽模式
關于"隱私瀏覽模式",在本系列的前一篇已經介紹過了,此處不再啰嗦。
相比前兩個招數,這招最嚴格。在隱私瀏覽模式下,瀏覽器關閉之后,期間所有的 cookie 都消失。
但是,這樣設置也可能帶來一些不方便之處(安全性和方便性通常是截然對立)。你可能要先嘗試一段時間,看看自己能否忍受這種模式。
配置方法和截圖如下:
在Firefox主菜單點"工具",再點"選項"。在彈出的選項對話框中,選"隱私"標簽頁。
在界面的第一個下拉框中選擇"使用自定義歷史記錄設置"
選完下拉框,你會看到一個復選框叫"始終使用隱私瀏覽模式",勾上這個復選框。
打勾之后,Firefox會提示你重啟瀏覽器。
◇小結
剛才介紹的幾招,都是針對單個瀏覽器。大部分情況下是夠用了。但是某些特殊情況,還是會搞不定。
比如:你經常用Gmail,而且依賴于Gmail的自動登錄。這時候,你就不能禁用.google.com域名下的cookie(禁用了就無法自動登錄Gmail)。
但是,你在用Google搜索的時候,又不希望讓Google知道你是誰。咋辦捏?請聽下回分解——用多瀏覽器搭配不同的招數。