Cookie基礎(chǔ)篇

 

 

因特網(wǎng)的Cookie技術(shù)極其簡單,卻有著旺盛的生命力。Cookie開始引起眾人的注意是從2000年二月份隨著網(wǎng)絡(luò)隱私權(quán)的提出開始的,有關(guān)的辯論至今仍在繼續(xù)。從另一方面來說,Cookie使得瀏覽網(wǎng)頁更容易了。幾乎所有的主要的網(wǎng)站設(shè)計(jì)者都使用了Cookie,因?yàn)樗麄兿霝闉g覽網(wǎng)站的人提供一個(gè)更好的瀏覽環(huán)境,同時(shí)也能更加準(zhǔn)確地收集訪客的信息。

 

 

  有家頗有影響的報(bào)紙上曾刊登了一篇很有深度的關(guān)于網(wǎng)絡(luò)隱私的文章,上面對(duì)于Cookie的定義是這樣的:

 

 

  “CookieWeb網(wǎng)站放在您的硬盤上的程序。它守在您的電腦里,搜集您的信息以及您在因特網(wǎng)上所做的任何事情,當(dāng)Web站點(diǎn)需要的時(shí)候它能夠下載所有這些搜集到的信息。

 

 

  像這樣的定義在報(bào)刊中相當(dāng)普遍。問題是,它的定義犯了很大的錯(cuò)誤。Cookie不是程序,而且它不能像程序一樣地運(yùn)行,所以它無法為自己搜集任何信息。它也不能從您的電腦上取得您的任何個(gè)人資料。

 

 

  Cookie的比較確切的定義應(yīng)該是這個(gè)樣子:

 

 

  “CookieWeb服務(wù)器保存在用戶硬盤上的一段文本。Cookie允許一個(gè)Web站點(diǎn)在用戶的電腦上保存信息并且隨后再取回它。信息的片斷以/對(duì)(name-value pairs)的形式儲(chǔ)存。

 

 

  舉例來說,一個(gè)Web站點(diǎn)可能會(huì)為每一個(gè)訪問者產(chǎn)生一個(gè)唯一的ID,然后以Cookie文件的形式保存在每個(gè)用戶的機(jī)器上。

 

 

  如果您使用IE瀏覽器訪問Web,您會(huì)看到所有保存在您的硬盤上的Cookie。它們最常存放的地方是:C:\Documents and Settings\Administrator\Cookies。在我的機(jī)器上共有165個(gè)文件。每一個(gè)文件都是一個(gè)由/對(duì)組成的文本文件,另外還有一個(gè)文件保存有所有對(duì)應(yīng)的Web站點(diǎn)的信息。

 

 

  在這個(gè)文件夾里的每個(gè)Cookie文件都是一個(gè)簡單而又普通的文本文件。透過文件名,您可以看到是哪個(gè)Web站點(diǎn)在您的機(jī)器上放置了Cookie(當(dāng)然站點(diǎn)信息在文件里也有保存)。您也能雙擊打開每一個(gè)Cookie文件。

 

 

比如,我訪問了goto.com,而且這個(gè)站點(diǎn)在我的電腦上放了個(gè)Cookiegoto.comCookie文件包含了這樣的內(nèi)容:

 

 

  UserID A9A3BECE0563982D www.goto.com/

 

 

  goto.com在我的電腦上存入了一個(gè)單一的/對(duì)。/對(duì)的UserIDA9A3BECE0563982D。在我第一次訪問goto.com的時(shí)候,該網(wǎng)站為我分配了一個(gè)唯一的ID并存在我的電腦里。

 

 

  (注:除了上面舉例的/對(duì),可能會(huì)有其它的/對(duì)同時(shí)保存下來。那是瀏覽器的一些內(nèi)部信息,一般用戶不必多做了解。)

 

 


  Amazon.com在我的電腦上保存了稍稍多一些的信息。當(dāng)我查看Amazon在我的電腦上建立的Cookie文件時(shí),它包含以下內(nèi)容:

 

 

  session-id-time 954242000 amazon.com/

 

 

  session-id 002-4135256-7625846 amazon.com/

 

 

  x-main eKQIfwnxuF7qtmX52x6VWAXh@Ih6Uo5H amazon.com/

 

 

  ubid-main 077-9263437-9645324 amazon.com/

 

 

  以上內(nèi)容顯示出Amazon存儲(chǔ)了一個(gè)主用戶ID ubid-main,一個(gè)標(biāo)記每次任務(wù)的ID session-id及任務(wù)發(fā)生的時(shí)間session-id-time。還有一個(gè)x-main,不知道是什么。

 

 

  大多數(shù)的網(wǎng)站在您的電腦上只保存一條信息,即用戶ID。但一個(gè)站點(diǎn)可以用Cookie存儲(chǔ)的/對(duì)的最大數(shù)目沒有任何限制。

 

 

  一個(gè)/對(duì)僅僅是一條命名的數(shù)據(jù),它不是程序,也不能任何事情。一個(gè)網(wǎng)站只能取得它放在您的電腦中的信息,它無法從其它的Cookie文件中取得信息,也無法得到您的電腦上的其它任何東西。

 

 

Cookie數(shù)據(jù)僅僅是Web站點(diǎn)在瀏覽者硬盤上存儲(chǔ)的/數(shù)據(jù)對(duì)。這就是Cookie的所有內(nèi)容。Web站點(diǎn)保存了數(shù)據(jù),隨后又把它取回。一個(gè)Web站點(diǎn)只能取得它保存在你電腦上的內(nèi)容,無法偷窺別的Cookie,更不要說電腦上其他的數(shù)據(jù)。
  
  Cookie數(shù)據(jù)的流動(dòng)過程如下:
  
  ·如果在瀏覽器上鍵入了一個(gè)Web站點(diǎn)的URL,瀏覽器向Web站點(diǎn)請(qǐng)求讀取網(wǎng)頁。比如,您輸入了:http://www.amazon.com
  
  瀏覽器將從Amazon的服務(wù)器讀取它的主頁。
  
  ·在做上面工作的同時(shí),瀏覽器將從電腦上尋找Amazon網(wǎng)站設(shè)置的Cookie文件。如果找到了AmazonCookie文件,瀏覽器會(huì)把文件中的所有/對(duì)同先前的URL一同發(fā)給Amazon服務(wù)器。如果沒有找到,就不發(fā)送Cookie數(shù)據(jù)。
  
  ·Amazon服務(wù)器接收Cookie數(shù)據(jù)和對(duì)網(wǎng)頁的請(qǐng)求。如果存在/對(duì),Amazon將使用它。
  
  ·如果沒有收到/對(duì),Amazon知道您在此之前沒有訪問過它的站點(diǎn),服務(wù)器會(huì)為您創(chuàng)建一個(gè)新的ID放進(jìn)Amazon的數(shù)據(jù)庫中,然后把/對(duì)放在傳回的網(wǎng)頁的頭信息里傳給您。您的瀏覽器將在硬盤上保存/對(duì)。
  
  ·每當(dāng)您再次訪問網(wǎng)站時(shí),網(wǎng)站服務(wù)器會(huì)改變/對(duì)或增加新的/對(duì)。
  
  另外,服務(wù)器會(huì)隨著/對(duì)發(fā)送一些其他信息。其一是生存期(Expiration date);還有一個(gè)是路徑(網(wǎng)站借此把不同的Cookie值與不同的網(wǎng)站部位關(guān)聯(lián)起來)。
  
  您有權(quán)控制這個(gè)過程。您可以設(shè)置一個(gè)選項(xiàng)讓瀏覽器在收到網(wǎng)站發(fā)來的/對(duì)時(shí)提醒您,由您決定是否接受。

 

 

 

 

Cookie實(shí)踐篇

 

 

 Cookie解決了網(wǎng)站建設(shè)人員的一個(gè)大難題,它允許一個(gè)網(wǎng)站在您的機(jī)器上保存網(wǎng)站相關(guān)信息,從而網(wǎng)站可以記住瀏覽器上一次所處的狀態(tài)。用戶ID是一種簡單的狀態(tài)信息——如果您的電腦上有ID存在,網(wǎng)站會(huì)知道您此前訪問過它。

 

 

  Web網(wǎng)站利用Cookie的方式各不相同。下面是幾個(gè)最為常見的例子:

 

 

  1.網(wǎng)站能夠精確地知道有多少人瀏覽過。

 

 

  由于代理服務(wù)器、緩存等的使用,唯一能幫助網(wǎng)站精確統(tǒng)計(jì)來訪人數(shù)的方法就是為每個(gè)訪問者建立一個(gè)唯一的ID。使用Cookie,網(wǎng)站可以完成以下工作:

 

 

  測(cè)定多少人訪問過;

 

 

  測(cè)定訪問者有多少是新用戶(即第一次來訪),多少是老用戶;

 

 

  測(cè)定一個(gè)用戶多久訪問一次網(wǎng)站。

 

 

  網(wǎng)站使用數(shù)據(jù)庫達(dá)到上述目標(biāo)。當(dāng)一個(gè)用戶第一次訪問時(shí),網(wǎng)站在數(shù)據(jù)庫中建立一個(gè)新的ID,并把ID通過Cookie傳送給用戶。用戶再次來訪時(shí),網(wǎng)站把該用戶ID對(duì)應(yīng)的計(jì)數(shù)器加1,得到用戶的來訪次數(shù)。

 

 

  2.網(wǎng)站保存用戶的設(shè)置,按照用戶的喜好定制網(wǎng)頁外觀。

 

 

  例如,假如你訪問 msn.com,它為你提供了改變網(wǎng)頁內(nèi)容、布局和顏色的能力,允許你輸入自己的郵政編碼,為你提供特定的天氣預(yù)報(bào)。輸入郵政編碼后,MSNCookie文件中將加入這樣的/對(duì):

 

 

  WEAT CC=NC%5FRaleigh%2DDurham?ION= www.msn.com/

 

 

  (本例中,郵編是Raleigh, NC

 

 

 大多數(shù)網(wǎng)站只在Cookie里保存用戶ID,而在網(wǎng)站數(shù)據(jù)庫中存儲(chǔ)用戶設(shè)置參數(shù)。當(dāng)然在/對(duì)里保存這些參數(shù)也是一種辦法(稍后我們將討論后一種方法有什么不妥)。

 

 

  3.電子商務(wù)站點(diǎn)能夠?qū)崿F(xiàn)一些像購物籃快速結(jié)賬之類的東西。

 

 

  Cookie里面包含了一個(gè)ID,當(dāng)你往購物籃中放了新東西時(shí)網(wǎng)站即能記錄下來。你放進(jìn)購物籃里的每一件東西保存在網(wǎng)站的數(shù)據(jù)庫里的對(duì)應(yīng)著你的ID的記錄。當(dāng)你買單時(shí),網(wǎng)站通過檢索數(shù)據(jù)庫中你的所有選擇就能知道你的購物籃里有些什么。假如沒有Cookie或類似的機(jī)制,上面的工作將很難完成。

 

 

  在所有的示例中,網(wǎng)站的數(shù)據(jù)庫能夠保存的有你所選擇的內(nèi)容、你瀏覽過的網(wǎng)頁、你在表單里填寫的信息等。所有這些信息保存在站點(diǎn)的數(shù)據(jù)庫中。多數(shù)情況下,包含有你的唯一IDCookie保存在你的電腦里。

 

 

  下面的實(shí)例用來演示Cookie和數(shù)據(jù)庫的組合能夠做些什么。我們來借助howcookieworks.com網(wǎng)站(一個(gè)假設(shè)網(wǎng)站)的服務(wù)器來講述工作過程:

 

 


  在你第一次訪問 http://www.howcookieworks.com 時(shí),服務(wù)器為你創(chuàng)建了一個(gè)唯一ID并在你的電腦上保存了一個(gè)包含有該IDCookie文件。舉例來說,在我現(xiàn)在使用的電腦上,我所看到的cookie文件的內(nèi)容是:

 

 

  user 35005 www.howcookieworks.com/

 

 

  數(shù)字35005并沒有什么稀奇——它僅僅是一個(gè)整數(shù),它每次隨著訪客的到來而增加。我是自網(wǎng)站建立以來的第35005個(gè)用戶。用戶的ID可以被設(shè)計(jì)得很精細(xì),許多網(wǎng)站使用超過20位數(shù)字的ID

 

 

  現(xiàn)在,無論何時(shí)訪問這個(gè)網(wǎng)站上的任何網(wǎng)頁,瀏覽器會(huì)把包含有你的IDCookie發(fā)回服務(wù)器。然后服務(wù)器在數(shù)據(jù)庫中保存一條記錄,包括你的ID、網(wǎng)頁的URL以及下載網(wǎng)頁的時(shí)間。

 

 

了解cookiecookie的安全性

 

 

一、什么是cookie

 

 

  打開你的Documents and Settings文件夾,進(jìn)去以后,隨便打開一個(gè)用戶來看看,是不是有一個(gè)文件夾叫“Cookies”,里面裝著一堆.txt文件?那么,這個(gè)Cookies到底是個(gè)什么東東呢?

 

 

  Cookie的英文原意是甜餅,但這里所講的“Cookie”可不是糕點(diǎn)哦,它只是一個(gè)保存在客戶機(jī)中的簡單的文本文件,這個(gè)文件與特定的Web文檔關(guān)聯(lián)在一起,保存了該客戶機(jī)訪問這個(gè)Web文檔時(shí)的信息,當(dāng)客戶機(jī)再次訪問這個(gè)Web文檔時(shí)這些信息可供該文檔使用。由于“Cookie”具有可以保存在客戶機(jī)上的神奇特性,因此它可以幫助我們實(shí)現(xiàn)記錄用戶個(gè)人信息的功能,而這一切都不必使用復(fù)雜的CGI等程序。是不是很有意思?

 

 

  二、Cookie的功能

 

 

  1.定制個(gè)性化空間

 

 

  用戶訪問一個(gè)站點(diǎn),可能由于費(fèi)用、帶寬限制等原因,并不希望瀏覽網(wǎng)頁所有的內(nèi)容。Cookie可根據(jù)個(gè)人喜好進(jìn)行欄目設(shè)定,即時(shí)、動(dòng)態(tài)地產(chǎn)生用戶所要的內(nèi)容,這就迎合了不同層次用戶的訪問興趣,減少用戶項(xiàng)目選擇的次數(shù),更合理利用網(wǎng)頁服務(wù)器的傳輸帶寬。

 

 

  2.記錄站點(diǎn)軌跡

 

 

  由于Cookie可以保存在用戶機(jī)上,并在用戶再次訪問該Server時(shí)讀回這一特性可以幫助我們實(shí)現(xiàn)很多設(shè)計(jì)功能,如顯示用戶訪問該網(wǎng)頁的次數(shù);顯示用戶上一次的訪問時(shí)間;甚至是記錄用戶以前在本頁中所做的選擇等等,這可免去我們?cè)偃パ芯繌?fù)雜的CGI編程。

 

 

  三、Cookie的組成

 

 

  類似Javascript變量,Cookie由變量名和值組成。其屬性里既有標(biāo)準(zhǔn)的Cookie變量,也有用戶自己創(chuàng)建的變量,屬性中變量是用變量=形式來保存。

 

 

  根據(jù)Netscape公司的規(guī)定,Cookie格式如下:

 

 

  SetCookie: NAME=VALUEExpires=DATEPath=PATHDomain=DOMAIN_NAMESECURE

 

 

  NAME=VALUE

 

 

  這是每一個(gè)Cookie均必須有的部分。NAME是該Cookie的名稱,VALUE是該Cookie的值。在字符串“NAME=VALUE”中,不含分號(hào)、逗號(hào)和空格等字符。

 

 

Expires=DATEExpires變量是一個(gè)只寫變量,它確定了Cookie有效終止日期。該屬性值DATE必須以特定的格式來書寫:星期幾,DDMMYY HH:MM:SS GMTGMT表示這是格林尼治時(shí)間。反之,不以這樣的格式來書寫,系統(tǒng)將無法識(shí)別。該變量可省,如果缺省時(shí),則Cookie的屬性值不會(huì)保存在用戶的硬盤中,而僅僅保存在內(nèi)存當(dāng)中,Cookie文件將隨著瀏覽器的關(guān)閉而自動(dòng)消失。

 

 

  Domain=DOMAINNAME:Domain該變量是一個(gè)只寫變量,它確定了哪些Internet域中的Web服務(wù)器可讀取瀏覽器所存取的Cookie,即只有來自這個(gè)域的頁面才可以使用Cookie中的信息。這項(xiàng)設(shè)置是可選的,如果缺省時(shí),設(shè)置Cookie的屬性值為該Web服務(wù)器的域名。

 

 

  Path=PATHPath屬性定義了Web服務(wù)器上哪些路徑下的頁面可獲取服務(wù)器設(shè)置的Cookie。一般如果用戶輸入的URL中的路徑部分從第一個(gè)字符開始包含Path屬性所定義的字符串,瀏覽器就認(rèn)為通過檢查。如果Path屬性的值為“/”,則Web服務(wù)器上所有的WWW資源均可讀取該Cookie。同樣該項(xiàng)設(shè)置是可選的,如果缺省時(shí),則Path的屬性值為Web服務(wù)器傳給瀏覽器的資源的路徑名。

 

 

  可以看出我們借助對(duì)DomainPath兩個(gè)變量的設(shè)置,即可有效地控制Cookie文件被訪問的范圍。

 

 

  Secure:在Cookie中標(biāo)記該變量,表明只有當(dāng)瀏覽器和Web Server之間的通信協(xié)議為加密認(rèn)證協(xié)議時(shí),瀏覽器才向服務(wù)器提交相應(yīng)的Cookie。當(dāng)前這種協(xié)議只有一種,即為HTTPS

 

 

  

 

 

  四、cookie的安全性

 

 

  上面我們說到的全都是cookie對(duì)我們的好處,但是實(shí)際上好象偷偷的被人放了東西在自己的硬盤里(而且還有很多人是在并不知道的情況下)畢竟感覺不是很舒服,尤其是這個(gè)文件還可以被遠(yuǎn)程的服務(wù)器長期的監(jiān)控,修改,記錄一些你沖浪的習(xí)慣甚至你的相關(guān)密碼.....這個(gè)這個(gè),雖然有一定的便利可圖,但是始終感覺不對(duì)味....當(dāng)然,如果遇到一個(gè)很正規(guī)的大網(wǎng)站當(dāng)然不用怕,但是要知道世界上還是有很多黑客網(wǎng)站的哦!所以呢——你自己看著辦拉,我只是提供這些信息而已,呵呵。

 

 

  最后就是如果你覺得還是對(duì)cookie這種東東加以限制的好呢,下面有幾種方法,你可以參考參考哦!
如果你用的瀏覽器是IE4:就右件點(diǎn)擊Internet Exploer—>屬性—>安全—>自定義級(jí)別—>選中禁止所有Cookie使用這個(gè)復(fù)選項(xiàng)就可以了;
如果你用的是IE5,哪就比較麻煩了,因?yàn)?/font>IE5還有本地、可信站點(diǎn)、受限站點(diǎn)等等級(jí)別之分,沒辦法,你就一個(gè)個(gè)的設(shè)吧。
上面的辦法都比較麻煩,有沒有什么簡單點(diǎn)的辦法呢?呵呵,其實(shí)你只要把剛剛咱們說的cookies文件夾設(shè)為只讀不就完了嗎?
不過最后還有些cookie不是放在你能看到的地方,而是放在注冊(cè)表中的(一說到注冊(cè)表我頭就大了),哪就運(yùn)行regedit,打開
HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/ CurrentVersion/ InternetSettings / Cache/Special Paths/Cookies
刪除其中所有的文件,OK拉,最后再用查找功能一個(gè)個(gè)的把“Cookies”找出來,一一刪除就行拉!