Cookies

毛慶禎

輔仁大學圖書資訊學系   

2000/12/05


| 定義 | 功能 | 原理 | 設定 | 安全顧慮 | 雅虎 | 建議 |

如果您已經上過網,很可能您的硬碟上就已經有了 cookies。 某些用戶認為網站追蹤用戶在網站上的活動,是侵犯用戶的隱私權。美國的廣告公司 DoubleClicks, 被政府調查不當使用 Cookies, 違反美國的隱私權法。

定義

為了回應對 HTML 檔案的要求, 遠方的網頁伺服器將一小段文字訊息, 偷偷地送入瀏覽器裡, 稱為 Cookies。把它視為記憶體快取和磁碟機快取, 也未嘗不可。

別人透過Cookies追蹤你, 而且是無所不在, 幾乎是無法避免的。

照理說,cookie 原來是配著牛奶一起吃的餅乾;但是在網際網路的世界中,cookie 則有完全不同的意思。Cookie 到底是什麼呢?

Cookie 表示由伺服器送出的資訊,而會由全球資訊網瀏覽工具儲存起來。下一次該特定訪客回到原來的全球資訊網伺服器時,這些儲存的資訊可以從瀏覽工具讀取回伺服器。讓瀏覽工具記住關於此訪客的特定資訊很有用處,例如是記住上次蒞臨時參閱的內容、所花的時間、或是用戶的偏好。

Cookie 是一個純文字型的檔案,儲存在瀏覽工具的目錄中;而在執行瀏覽工具時,亦會載入 RAM 記憶體。此外,在登出網站或全球資訊網伺服器時,cookie 亦會儲存到電腦的硬式磁碟上。

功能

Cookie 可用於儲存用戶帳號及密碼之用。此外,它們亦可用來儲存關於起始網頁的偏好。可以做個人化參閱的網站,會要求您的全球資訊網瀏覽工具在電腦的硬式磁碟上,儲存少量關於這些偏好的資訊。這樣一來,每次您登入該網站時,瀏覽工具會檢查是否已有為該特定伺服器事先定義的偏好(即 cookie)。如果有的話,瀏覽工具會在傳送您的網頁要求時,一起將 cookie 傳送給伺服器。Microsoft 和 Netscape 採用 cookie,在他們的網站上建立個人化的起始頁。各公司對於 cookie 的常見利用方式包括:線上訂購系統、網站個人化、以及網站使用上的追蹤。

Cookie 的最佳利用方式之一即為網站的個人化。例如當某位訪客蒞臨 CNN 的網站而不要看到任何商業方面的新聞時,該網站可讓用戶做這樣的選擇。從這時候開始(或直到 cookie 有效期限截止前),該用戶即不會在 CNN 的網頁上看到商業方面的新聞。

Cookies 的作用是, 協助網頁伺服器, 辨識使用者的身份, 在後續的查詢作業裡, Cookies 被送回給網頁伺服器。因為網頁伺服器和客戶端的瀏覽器, 並不是在持續的連線狀態, 過往的查詢記錄必須以 Cookies 的方式保留, 方便使用者反覆地查詢同一伺服器。

當使用者進入圖書館系統時, 每個挑選的書目資料, 都放在電子書車裡, 就像在真實的圖書館裡, 直到離開的時候, 才向櫃檯辦理借書手續。所以, 伺服器必須要記得使用者挑選過的書目, Cookies 就在此時發揮功效, 下達預約指令時, 所有挑選過的書目資料, 同時一併傳送給伺服器。

網路購物也是一樣的, 至於電子信箱或網路論壇, 也以類似的方法, 保持顯示信件的狀態, 顯示所有的信件或祗顯示未讀的信件。亞馬遜書店的購物籃也是以 Cookies 做成的。

除了購物車與特定訊息之類的應用之外,Web管理員也可以利用cookies來追蹤使用者曾經瀏覽該站的哪些領域,而不是統計隨機的鍵閱,以致無從區別到底是新的訪客,或是某人瀏覽了整個網站。這是cookies技術的一般用途。Web管理員可因此瞭解他們所做的內容是否廣為大家所接受,而不需要靠經驗來推測。

Cookies也常被運用在可依使用者需求自訂內容的Web站,是頗適合Intranet的一種應用。事實上,Netscape與微軟均在他們的網站上提供了很好的範例,通常在你安裝好他們的瀏覽器軟體後就可以取得這些範例應用。

有些瀏覽器讓使用者決定如何處理 Cookies: 接收所有的 Cookies、祗接受會傳回原伺服器的 Cookies、不接受 Cookies、在接受前 Cookies 發出警告。

如果選擇不接受 Cookies, 可能無法使用某些網頁; 如果選擇在接受前 Cookies 發出警告, 可能不勝其煩, 有些網頁送出的 Cookies, 可能高達30個。

有些網頁要求使用者先登錄, 可能包括使用者名稱及密碼在內, 寄送給網頁伺服器的同時, 也在客戶端的瀏覽器裡, 以 Cookies 的型式, 留存一份。

Cookies 跟著電腦, 不會跟著人走, 所以, 使用公共電腦時, 沒有做完清除動作就離開的話, 後到的使用者可能以前面使用者的身份繼續和網頁伺服器來往。

如果, Cookies 檔案毀損時, 使用者可能無法繼續使用網頁原來提供的服務。

原理

文件的 HTML 碼裡面的一行指令會告訴瀏覽工具以特定的名稱或數值設定 cookie。下面是一個設定 cookie 的一般範例。

Set-Cookie: name = VALUE;
expires = DATE;
path = PATH;
domain = DOMAIN_NAME;

有什麼樣的安全措施?HTTP 的 cookie 不會從硬式磁碟上擷取個人的資料、滲入病毒、取得您的電子郵件地址、或是竊取關於您身份的敏感資訊。但是 HTTP 的 cookie 可追蹤您在特定網站上的活動。不使用 cookie 的話,網站上活動的追蹤會非常地困難。

就和網際網路上的所有其它活動一樣,您匿名的程度是由您自己決定的。除非您公開自己的身份,沒有任何網站可以知道您的身份。而在此同時,cookie 僅不過是一個用來追蹤網站上活動之統計資料,以對使用特徵做更佳暸解,從而提昇訪客使用效率的工具。

當網站的設計人員想要讓網頁提供來訪者更佳的互動性,或是要讓來訪者能自訂網站的外觀,則必須使用到 cookie。此外,若您希望在特定的狀況下,能改變網站的外觀,cookie 提供迅速而簡單的方式,讓 HTML 網頁能按照需要變化。最新的伺服器採用 cookie 改善資料庫的互動性,從而提高網站整體的互動性。

Cookie是可以讓網頁伺服器辨識使用者資料的功能,並留存記錄之用的資訊集合。 Cookie 會存放您對特定站台的設定,而讓網站更能有效地幫助您。Cookie 的使用方式 有業界標準,目前大部分的網站使用 Cookie 來為他的客戶提供各種有用的功能。不過 Cookie 只識別您的電腦,不會識別您的身份。

設定

這些 cookies 檔案不大,打開看看這些檔,可以很清楚地看出網域名稱的資料,但是其他資料則是一堆經過加密,看起來毫無意義的數字。為了防止個人資料外洩,當然應該刪除這些 cookies ,不過殺了這些 cookies ,以後上網如需要使用者名稱及密碼的網站,就得很累人地不斷重複輸入個人資料。

瀏覽器只為每一個使用者記錄 300 個 Cookies、只為每一個 Web Server 記錄 20 個 Cookies、而每一個 Cookies 最大為 4 KB。

Netscape 可以把 cookies.txt 設成唯讀,這樣既可保有 cookies ,又不怕被其他網頁加入或更動資料。但是 IE 就沒法這樣做了。也有一些工具可使用來監視 cookies 的動作,如 CookieMaster 可以很容易刪除一些不想要的 cookies,這個小工具和 Netscape 4.x 及 IE 4.x 都相容。

安全顧慮

一般人對於cookies有很多誤解,最著名的是它們會造成很大的安全風險,並且侵犯了個人的隱私。這類顧慮是基於對cookies到底是什麼,以及它們如何運作的不瞭解。

Cookies並不蒐集使用者私人的資訊,或是在硬碟裡隨意亂逛。如果使用者將信用卡號碼或電子郵件位址一類的個人資訊傳送給Web伺服器,該伺服器可能將這些資料放在一個cookie裡,而使用者則渾然不覺這些動作。但是,cookies的設計必須限定該項資訊只能由該網站使用;任何網站都不能使用由其它網站所植入的cookie資訊。Cookie檔案裡所存放的資訊是一連串的數字,唯一明顯可見的文字是該Web站的資訊。如果使用者有所顧忌,當然可以刪除他們曾經執行信用卡交易的網站的記錄。

此外,cookies也不是在客戶端執行的程式。事實上,唯一可以利用某特定cookie的主體就是產生它的Web伺服器應用。它其實很像伺服器要求瀏覽器幫它保留一些文字。如果沒有script來解讀這些文字的用途,它們也只是一些無意義的文字而已。

舉例來說,Andy's Netscape HTTP Cookie Notes 網站, http://www.illuminatus.com/cookie.fcgi,以一個可以讓使用者閱覽他或她自己的cookie檔案的敘述語言。由於這是作者使用她的電腦第一次造訪該站,因此cookie檔設定為「Count=1」─可以說沒有一點危險性。而Andy’s網站能利用這個cookie做什麼呢?它回應了一個歡迎您初次造訪的訊息。而第二次拜訪時,該檔案被更新為「Count=2」,回應的訊息則變成「歡迎再度光臨」。

另一種誤解則為cookies是情治單位用來追蹤使用者所有線上行蹤的工具。雖然cookies確實可以在網站內追蹤瀏覽器的動作,但是它們也只限於在一個網站內,並無法跨站追蹤。如果瀏覽者從某個網站下載軟體,在另一個網站簽了留言簿,從intranet上讀取了一些資料,再使用同一個瀏覽軟體進入某項Intranet應用,沒有人記錄這些所有的動作。Cookie只能與將它植入的應用溝通。以下是從典型的Netscape Navigator瀏覽器所擷取的一個cookie檔內容: 

# Netscape HTTP Cookie File
# ttp://www.netscape.com/newsref/std/cookie_spec.html
# This is a generated file! Do not edit.
.msn.com TRUE / FALSE 937396800 MC1
.foodstuff.com TRUE / FALSE 882397291 MSF113 1
.excite.com TRUE / FALSE 946641600 UID 373AA632B972CE
.isn.com TRUE / FALSE 946684799 session 21475691
.toyota.com TRUE / FALSE 946684799 LT_UID OonmtG3qliH1G
.foodstuff.com TRUE / FALSE 883801067 MSF1021

另一項安全顧慮則來自早期的Javascript與Java建置,尤其是在Netscape Navigator的環境,駭客可以在硬碟上執行未經限制的程式,例如偵測硬碟資訊或蒐集電子郵件位址。這些問題雖然在新版的Navigator已改正過來,但對於cookies可能可以直通這些安全漏洞的顧忌,則未能完全消除。

某些安全管理人員擔心附在瀏覽器裡的資訊,未能連結到授權的使用者。也就是說,任何使用裝有該瀏覽軟體的機器的人,即擁有內含在裡面的cookie。因此,如果某台機器曾用來連結某供應商的訂單處理Intranet,未經授權的人很有可能使用該機器,並取得訂單的資訊。

事實上,我們可以在顧客端安裝一些簡單的安全機制來解決這個問題,例如良好的存取控制方法或健全的實體安全政策。無論如何,這也提醒你永遠不要將身份辨識資訊儲存在cookies裡,代替的方法為使用基本驗證法。差別在於cookies會持久,不論你是否重新啟動瀏覽器。而基本驗證則會在每次關閉瀏覽器時,相關的身份辨識資訊也會消失。

此外,cookies也包含有效期限,亦即cookie無法保存知識的資料庫。因此如果在Intranet應用中使用cookies,開發人員必須確定建立一個合理而可行的有效日期控制機制。它可能看起來像一個缺點,但是既然cookies是存放在客戶端,它們的有效期間將根據客戶端的系統時間來計算,而不是伺服器的。只是,初始的到期日與時間,仍然由伺服器所設定。

舉例來說,如果你的公司和伺服器均位於台北,而你的客戶在雪梨,假設你將cookies設定為一小時內有效,則雪梨的客戶將根本無法使用你的應用,因為台北和雪梨有兩小時的時差,cookies永遠無法設定在瀏覽器裡。雖然如此,使用cookies的關鍵,尤其在互動式應用的情況,是在不致於影響使用者使用該應用的前提下,儘快讓cookies失去效用。對於國際性的顧客而言,此點可能更為棘手。你可能必須將有效期間設定為一天或數天。從另一方面來看,如果所處理的資訊不需要高度的安全防禦,倒是可以考慮較長的有效期間,如數天甚至幾個月。自訂瀏覽應用可能就是一個合適的範例。

但是,如果你認為你的顧客會頻繁地用同一部電腦使用同一個運用cookie的應用,那麼他們的瀏覽器裡可能會儲存一些沒有人想要的舊資訊。在這種情況下,當使用者進入你的應用時,切記要重新設定你的cookie值。另一項顧慮來自於cookie會將資訊寫入客戶端硬碟的事實。其實,cookie可以寫入的資訊受到很大的限制,其記錄不能超過255個字元。因此,cookie資訊最好簡潔並嚴格控制有效期間,以免超過客戶端瀏覽器的cookie限制(也能夠協助你避免因此而產生的技術支援問題)。

這些顧慮的總結是,很多公司設定了一項安全政策,禁止在公司的瀏覽器上使用cookies。因此,雖然cookies是能夠解決無狀態協定技術問題的一種安全而簡單的方法,Intranet開發人員如果想要使用這項技術,恐怕得先清除一些政治面的障礙。

Intranet開發人員必須瞭解這些對於cookies的顧忌確實存在,當使用它們時,需要花點時間教育業務夥伴其實並沒有什麼值得擔心的風險存在。方法可能是使用一個點選畫面,指引有所顧忌的Intranet用戶閱覽cookie常見問題解說專欄(FAQ)。

目前已有幾個不錯的建置存在,包括 http://www.illuminatus.com/cookie.fcgi 的Andy's網頁。或者,他們也可以建置一個自己的FAQ,說明該網站如何使用cookies,並允許客戶閱覽他們自己的cookie資訊。

Intranet開發人員在使用cookies時,也應該小心謹慎。我們建議儘量不要將電子郵件位址、信用卡資訊或其它私人性的資料放在cookie裡,尤其是當應用程式不需要這些資訊也能正常運作的時候。分配一個識別碼給用戶的做法,遠比使用其電子郵件位址當作識別碼較為恰當。而在需要時才要求使用者輸入信用卡號碼,也比為了方便將這些號碼存放在cookie裡來得安全。這些謹慎的做法,可以使客戶對你的網站的cookies安全性的不必要顧慮降到最低。

至於對僅提供給特定業務夥伴的應用,可能值得先花點時間瞭解這些未來用戶的cookies安全政策。如果答案是不得使用cookies,Intranet開發人員就必須嘗試教育這些經理人員有關cookies的運作和安全性,希望他們因此可以取消對cookies的禁令。或者他們也可以開發一項應用,其中cookies的使用只是一項選擇而已。或是乾脆放棄cookies所能提供的簡易解決方案,而採取較能夠被接受的其它做法。

例如,我們可以開發一套純粹追蹤使用狀態的應用。有不少應用就是採用這種方法,將使用者的資訊記錄在伺服器上一個簡單的檔案裡,或甚至是一個完整的資料庫。這種做法通常是因為cookies未被接納,或是cookies的技術尚未發展出來。例如,Cisco Systems即開發了一套可以在Web上提供研討會服務的應用。它包含了一個以顧客資料庫為基礎的用戶識別碼,時段追蹤則透過URL來進行。一旦URL傳輸到資料庫,資料庫即產生一個唯一的鍵值,允許對每一個用戶設定屬性。它因此可以針對該網站的每一個使用者記錄其交易歷史,而不需要使用cookies。在網路上搜尋往往可以找到你所選擇的語言的敘述程式,有時甚至不需要花費任何成本。

記錄時段歷史的敘述語言也可以存放在伺服器上,而且只有在瀏覽器連結時才能使用。此種做法的優點之一為:唯一攸關的日期與時間─到期日─可以完全由伺服器來控制。但是,此法也有一些明顯的缺點。其中之一為無法辨識再度光臨的訪客;其二為如果伺服器必須記錄每一個用戶的要求,寶貴的CPU與磁碟空間將會被佔用掉。

雅虎的做法

建議

我們建議當狀態資訊是應用的關鍵,並且沒有其它更好方法可以提供所需要的狀態資訊時,使用cookies。同時,我們也要提醒Intranet開發人員在使用cookies時,要相當謹慎。雖然cookies目前的使用並不會造成嚴重的安全問題,它們的使用程度越有限,內含的資訊越不吸引駭客,則越安全。我們認為使用cookies的Intranet開發人員應該鼓吹cookies的運用,提供他們如何使用cookies的資訊,並隨時警覺使用者對這項技術的恐懼。

一般而言,Cookie 用來︰

(1) 提醒我們確認您的身份並存取您的帳戶資料(存儲在我們的電腦上),以便為您提供更好和更個人化的服務。這個 cookie 在您註冊或「登入」時建立,並在您「登出」時修改。 Yahoo! 也為其他服務(如 Yellow Pages)使用 cookies 存儲您的郵遞區號。

(2) 估算瀏覽人數。每一個讀存 Yahoo! 的瀏覽器被賦予一個唯一的 cookie,用於確定重複使用的程度,比較註冊使用者與非註冊使用者的使用次數,並根據使用者興趣和行為模式協助確定廣告對象。

(3) 幫助 Yahoo! Stores 中的商家追蹤其商店的訪問和業務,並處理您的購物籃中的商品。由 cookies 收集的資料有時稱為「點取流向」或「點取路線」,並且也可以描述您在每家商店中已經瀏覽了哪些網頁。

(4) 追蹤您參加促銷、抽獎和競賽時的進展和次數。在Yahoo! 主辦的促銷活動使用 cookies 時,寫入 cookie 的資料指出整個促銷過程中參與者的進展,並可以用來追蹤抽獎活動的參與、提交和狀況。

(5) 測量瀏覽模式,即您訪問了哪些 Yahoo! 網站,以及您所累積的訪問量。我們使用這些資料可以瞭解到,使用者習慣是相似的還是各有不同,因而能夠使您在 Yahoo! 中每一種新體驗一次比一次好。我們要使用此資料,以便您和其他使用者在我們的網站將能看到更富個人化的內容、廣告和促銷。

在 Yahoo! 上刊登廣告的廣告網絡也可以使用它們自己的 cookies。

Yahoo! 也會收集IP 地址進行系統管理,並將全部資料報告給我們的廣告商。此外,Yahoo! Mail 也將 IP 地址包含在待發郵件的標題中。

建議

我們建議當狀態資訊是應用的關鍵,並且沒有其它更好方法可以提供所需要的狀態資訊時,使用cookies。同時,我們也要提醒Intranet開發人員在使用cookies時,要相當謹慎。雖然cookies目前的使用並不會造成嚴重的安全問題,它們的使用程度越有限,內含的資訊越不吸引駭客,則越安全。我們認為使用cookies的Intranet開發人員應該鼓吹cookies的運用,提供他們如何使用cookies的資訊,並隨時警覺使用者對這項技術的恐懼。


範例

# Netscape HTTP Cookie File
# http://www.netscape.com/newsref/std/cookie_spec.html
# This is a generated file! Do not edit.

e12.zdnet.com:8080    FALSE    /clear     FALSE    946684811    cgversion     2
.preferences.com    TRUE    /    FALSE     1182140432    PreferencesID     I9Vz9j6h8ynYp6laqS+vlW
.zdnet.com    TRUE    /    FALSE     946684811    browser    D23E846C35E27121
.imgis.com    TRUE    /    FALSE     1061756654    JEB2     CE0788A1D78C3D788C88F73B3004A530
ad1.asiad.net    FALSE    /    FALSE     942189166    NGUserID     ca27d01e-270-904078008-2


參考資源

  1. SONY運用Cookies的聲明文件, http://www.sony.com.tw/privacy/privacy_4.htm

  1. 非官方的答客問, http://www.cookiecentral.com/faq/index.shtm


自我評量

  1. 使用Explorer或Netscape時, 可以選擇是否接受別人的Cookies嗎?

    毛慶禎
    臺北縣新莊市輔仁大學圖書資訊學系
    Tel: 02 29031111 ext 2334, 3244(研究室) - Fax: 02 29017405
    E-mail: mao@blue.lins.fju.edu.tw
    http://www.lins.fju.edu.tw/~mao/internet/cookies.htm