1.cookie是什麼?
也許你曾經聽過Cookie這個名詞,但是它究竟是個什麼東東咧?
如果直接翻譯的話,cookie是餅乾的意思。不過可別把它當成你的下午茶點心喔,cookie跟食物是沒有什麼關係的。
我將它翻譯成『庫記』:它可以算是瀏覽器的『庫存記號』,所以簡稱庫記啦。 Cookie是當您訪問某些網站時,經
由瀏覽器寫入您的硬碟的一些簡短資訊。 某個 cookie 檔案中可能會包含用於跟蹤您所訪問過的網頁、諸如使用者 ID
的個人資料。 但是cookie 中所包含的資料都是您所提供的個人資料。Cookie 不可以讀取您的硬碟中的資料,也不可
以讀取其它網站寫入的 cookie 檔案。
在HTTPD (Hyper Text Transfer Protocol Daemon) 的通訊協定中對於庫記的定義為提供服務主機與使用者程式間附加資
訊的儲存與傳遞。在網路上瀏覽首頁的時候,除了表單﹝FORM﹞功能之外,HTML實在沒有提供其他的功能讓使用
者的瀏覽程式跟提供服務主機交換資訊,而庫記就是在這種沒有辦法之下的一個不是很有效率的方式。 雖然庫記並
非很有效率,但如果善加運用還是能發揮相當的功能的,但是庫記通常要和CGI、JAVA Script等配合運用,如果你並
不打算在網頁中放置任何CGI或JAVA Script的功能,我建議:你可以不必瞭解庫記!
2.為何要使用cookie:
本質上,傳統的WWW所提供的靜態頁面仍擺脫不了 " 廣播 " 的氣息,因為每位用戶所瀏覽同一頁面的資訊都是相同的
,僅管不是在同一時間瀏覽,動 態物件的引入 (如CGI) 則令Web資訊較為互動,雖然瀏覽同一頁面,但每位用 戶可獲
得的資訊內容通常視個人詢問的資料而定。 WWW技術的另一挑戰即是提供更為互動的資訊,然而,一個Web站台每一
分、每一秒皆有相當數量的用戶瀏覽這、瀏覽那,並且每位用戶的每次瀏覽皆是間歇性的,無法預估一用戶可能繼續
瀏覽多久,然而,Web伺服器若要提供每位用戶專屬的、互動的服務,勢必得追蹤每位用戶的瀏覽狀態,即記錄每一用
戶 專屬的組態,例如登入識別碼與密碼、經常瀏覽的頁面、上次點選的項目等等, 面對這麼多不確定的用戶群,伺服
器如何能一一追蹤、提供高品質的互動服務 ? Web技術的瓶頸即在此。 為有效儲存每一HTTP客戶端的瀏覽組態,又不
對伺服器的負擔造成太大影 響,Netscape提出客戶端組態(cookie)的概念,此機制允許HTTP伺服端將個別客戶端的瀏覽
狀態以數對名稱 / 值的形式儲存於客戶端,客戶端於每次瀏覽時 可上傳其組態資訊,如此,伺服器的負擔將分散於所有
客戶端,且伺服器亦無必 要持續地追蹤每位用戶的瀏覽狀態。
3.cookie的使用?
怎麼使用庫記因為庫記必需由主機提供,所以你必需在CGI程式中送出一個設定瀏覽器庫記的表頭。這個表頭的語法
如下: Set-Cookie: NAME=VALUE; expires=DATE; path=PATH; NAME=VALUE 這是設定庫記中唯一必要的參數。NAME
及VALUE都可由任何字串組成。 expires=DATE 這個參數是定義庫記的有效日期。
DATE的格式如下 Wdy, DD-Mon-YYYY HH:MM:SS GMT 如果沒有定義這個參數,當瀏覽器程式關閉後該庫記也一併失效。
path=PATH 當瀏覽器的庫記被設定後,使用者再度瀏覽path參數所定義的網頁時,瀏覽器會將所設定的庫記回傳給主機。
如果這個參數沒有定義,則當使用者再次瀏覽相同網頁時,瀏覽器也會將庫記回傳給主機。
4.cookie的實例?
底下的範例展示了cookie的使用,此處假設一HTTP客戶端μ初次瀏覽某遠端 HTTP 伺服器α,並查詢其中的一些零件資料。
初次瀏覽α的"/"路徑下的某URL時,μ見到一頁輸入表( FORM ),此表要求用戶輸入其識別碼,按下完成鈕(Submit)之後,
α傳回底下的表頭: Set-Cookie: Customer=Roger_Lee; path=/; expires=Wednesday, 09-Nov-99 23:12:40 GMT 當μ再次瀏覽α的
"/"路徑下的某URL以查詢某零件時,μ送出底下的表頭: Cookie: Customer=Roger_Lee 而α傳回了底下的表頭: Set-Cookie:
PartNo=ROCKET_LAUNCHER_0001; path=/ 當μ再次向該α要求一位於"/"路徑之下的另一URL時,它將送出底下的表頭:
Cookie: Customer=Roger_Lee; PartNo=ROCKET_LAUNCHER_0001 而α這次傳回了底下的表頭:
Set-Cookie: Shipping=FEDEX; path=/foo 到此,μ已收到3份cookie,它們的名稱是Customer、PartNo、及Shipping,
所屬的路徑分別是"/"、"/"、及"/foo"。 當μ再向α要求一位於"/"路徑之下的某URL 時,它即送出所有滿足 "/"
路徑的cookie,其表頭如下: Cookie: Customer=Roger_Lee; PartNo=ROCKET_LAUNCHER_0001 當μ再向α要求一位於"/foo"路徑
之下的某URL時,它將送出所有滿足"/foo"路徑的cookie,其表頭如下: Cookie: Customer=Roger_Lee; PartNo=ROCKET_LAUNCHER_0001;
Shipping=FEDEX
5.cookie與網路安全
一般人對於cookies有很多誤解,最著名的是它們會造成很大的安全風險,並且侵犯了個人的隱私。
這類顧慮是基於對cookies到底是什麼,以及它們如何運作的不瞭解。 Cookies並不蒐集使用者私人的資訊,
或是在硬碟裡隨意亂逛。如果使用者將信用卡號碼或電子郵件位址一類的個人資訊傳送給Web伺服器,
該伺服器可能將這些資料放在一個cookie裡,而使用者則渾然不覺這些動作。但是,cookies的設計必須限定
該項資訊只能由該網站使用;任何網站都不能使用由其它網站所植入的cookie資訊。Cookie檔案裡所存放的
資訊是一連串的數字,唯一明顯可見的文字是該Web站的資訊。
如果使用者有所顧忌,當然可以刪除他們曾經執行信用卡交易的網站的記錄。 此外,cookies也不是在客戶端
執行的程式。它其實很像伺服器要求瀏覽器幫它保留一些文字。如果沒有script來解讀這些文字的用途,它們
也只是一些無意義的文字而已。 另一種誤解則為cookies是情治單位用來追蹤使用者所有線上行蹤的工具。
雖然cookies確實可以在網站內追蹤瀏覽器的動作,但是它們也只限於在一個網站內,並無法跨站追蹤。
6.新消息:
網景瀏覽器「傳訊者」的安全瑕疵可能讓私人資料曝光,為此網景正積極搶救,並進行各種測試。
傳訊者的瑕疵在於Javascript的技術組合,而非單一環節出了問題。網頁互動得靠Javascript執行,為
了不讓不肖網站偷窺到網友的私人資料,進入網頁前必須要通過安全認證。 Javascript是網景開發的
網頁程式,能使 HTML 的物件執行互動的指令,以及產生動態的效果。用戶可以開啟全視窗或縮小
的網頁讀取電腦裡的資料。之以有跨網頁安全設計,目的就是防止不肖網站闖入偷窺。 不過不肖網
站這次利用cookie的技術,植入Javascript的原始碼,規避安全認證檢查。Cookie可以把使用者是否曾
經來過網站、來過的時間、次數等資料存檔,下次再造訪該伺服器時,瀏覽器會先將這些Cookie的
資料傳給伺服器,省下辨識、認證的時間。 不過網景指出,唯有用戶把密碼與使用者代號設成default值
,否則不用擔心私人資料(如書籤、快取資訊等)曝光。 網景表示,它已開始測試一組可行的抓漏辦法
,不過為了安全起見,它建議網友關閉Javascript、拒絕接受Cookies、或只接受可靠來源的Cookies。
转自: http://cyber.cs.ntou.edu.tw/~b88021/cookie.htm