Cookie,有時(shí)也用其復(fù)數(shù)形式Cookies,指某些網(wǎng)站為了辨別用戶身份、進(jìn)行session跟蹤而儲存在用戶本地終端上的數(shù)據(jù)(通常經(jīng)過加密)。定義于RFC2109(已廢棄),最新取代的規(guī)范是RFC2965。
發(fā)起
Cookie最早是網(wǎng)景公司的前雇員Lou Montulli在1993年3月的發(fā)明。
Cookie是由服務(wù)器端生成,發(fā)送給User-Agent(一般是瀏覽器),瀏覽器會將Cookie的key/value保存到某個(gè)目錄下的文本文件內(nèi),下次請求同一網(wǎng)站時(shí)就發(fā)送該Cookie給服務(wù)器(前提是瀏覽器設(shè)置為啟用cookie)。Cookie名稱和值可以由服務(wù)器端開發(fā)自己定義,對于JSP而言也可以直接寫入jsessionid,這樣服務(wù)器可以知道該用戶是否合法用戶以及是否需要重新登錄等。
服務(wù)器可以利用Cookies包含信息的任意性來篩選并經(jīng)常性維護(hù)這些信息,以判斷在HTTP傳輸中的狀態(tài)。Cookies最典型的應(yīng)用是判定注冊用戶是否已經(jīng)登錄網(wǎng)站,用戶可能會得到提示,是否在下一次進(jìn)入此網(wǎng)站時(shí)保留用戶信息以便簡化登錄手續(xù),這些都是Cookies的功用。另一個(gè)重要應(yīng)用場合是“購物車”之類處理。用戶可能會在一段時(shí)間內(nèi)在同一家網(wǎng)站的不同頁面中選擇不同的商品,這些信息都會寫入Cookies,以便在最后付款時(shí)提取信息。
Cookie可以保持登錄信息到用戶下次與服務(wù)器的會話,換句話說,下次訪問同一網(wǎng)站時(shí),用戶會發(fā)現(xiàn)不必輸入用戶名和密碼就已經(jīng)登錄了(當(dāng)然,不排除用戶手工刪除Cookie)。而還有一些Cookie在用戶退出會話的時(shí)候就被刪除了,這樣可以有效保護(hù)個(gè)人隱私。
Cookie在生成時(shí)就會被指定一個(gè)Expire值,這就是Cookie的生存周期,在這個(gè)周期內(nèi)Cookie有效,超出周期Cookie就會被清除。有些頁面將Cookie的生存周期設(shè)置為0或負(fù)值,這樣在關(guān)閉頁面時(shí),就馬上清除Cookie,不會記錄用戶信息,更加安全。
如果在一臺計(jì)算機(jī)中安裝多個(gè)瀏覽器,每個(gè)瀏覽器都會在各自獨(dú)立的空間存放cookie。因?yàn)?/span>cookie中不但可以確認(rèn)用戶,還能包含計(jì)算機(jī)和瀏覽器的信息,所以一個(gè)用戶用不同的瀏覽器登錄或者用不同的計(jì)算機(jī)登錄,都會得到不同的cookie信息,另一方面,對于在同一臺計(jì)算機(jī)上使用同一瀏覽器的多用戶群,cookie不會區(qū)分他們的身份,除非他們使用不同的用戶名登錄。
反對cookies者
一些人反對cookie在網(wǎng)絡(luò)中的應(yīng)用,他們的理由如下:
識別不精確
參見上面的識別功能
隱私,安全和廣告
Cookies在某種程度上說已經(jīng)嚴(yán)重危及用戶的隱私和安全。其中的一種方法是:一些公司的高層人員為了某種目的(譬如市場調(diào)研)而訪問了從未去過的網(wǎng)站(通過搜索引擎查到的),而這些網(wǎng)站包含了一種叫做網(wǎng)頁臭蟲的圖片,該圖片透明,且只有一個(gè)象素大小(以便隱藏),它們的作用是將所有訪問過此頁面的計(jì)算機(jī)寫入cookie。而后,電子商務(wù)網(wǎng)站將讀取這些cookie信息,并尋找寫入這些cookie的網(wǎng)站,隨即發(fā)送包含了針對這個(gè)網(wǎng)站的相關(guān)產(chǎn)品廣告的垃圾郵件給這些高級人員。
因?yàn)楦哂嗅槍π,使得這套系統(tǒng)行之有效,收到郵件的客戶或多或少表現(xiàn)出對產(chǎn)品的興趣。這些站點(diǎn)一旦寫入cookie并使其運(yùn)作,就可以從電子商務(wù)網(wǎng)站那里獲得報(bào)酬,以維系網(wǎng)站的生存。
鑒于隱藏的危害性,瑞典已經(jīng)通過對cookie立法,要求利用cookie的網(wǎng)站必須說明cookie的屬性,并且指導(dǎo)用戶如何禁用cookie。
盡管cookie沒有病毒那么危險(xiǎn),但它仍包含了一些敏感信息:用戶名,計(jì)算機(jī)名,使用的瀏覽器和曾經(jīng)訪問的網(wǎng)站。用戶不希望這些內(nèi)容泄漏出去,尤其是當(dāng)其中還包含有私人信息的時(shí)候。
這并非危言聳聽,一種名為Cross site
scripting的工具可以達(dá)到此目的。在受到Cross site scripting攻擊時(shí),cookie盜賊和cookie毒藥將竊取內(nèi)容。一旦cookie落入攻擊者手中,它將會重現(xiàn)其價(jià)值。
cookie盜賊:搜集用戶cookie并發(fā)給攻擊者的黑客。攻擊者將利用cookie信息通過合法手段進(jìn)入用戶帳戶。
cookie毒藥:利用安全機(jī)制,攻擊者加入代碼從而改寫cookie內(nèi)容,以便持續(xù)攻擊。
鑒于cookie的局限和反對者的聲音,有如下一些替代方法:
Brownie方案,是一項(xiàng)開放源代碼工程,由SourceForge發(fā)起。Brownie曾被用以共享在不同域中的接入,而cookies則被構(gòu)想成單一域中的接入。這項(xiàng)方案已經(jīng)停止開發(fā)。
P3P,用以讓用戶獲得更多控制個(gè)人隱私權(quán)利的協(xié)議。在瀏覽網(wǎng)站時(shí),它類似于cookie。
在與服務(wù)器傳輸數(shù)據(jù)時(shí),通過在地址后面添加唯一查詢串,讓服務(wù)器識別是否合法用戶,也可以避免使用cookie。
cookie 歷來指就著牛奶一起吃的點(diǎn)心。然而,在因特網(wǎng)內(nèi),“cookie”這個(gè)字有了完全不同的意思。那么“cookie”到底是什么呢?“Cookie”是小量信息,由網(wǎng)絡(luò)服務(wù)器發(fā)送出來以存儲在網(wǎng)絡(luò)瀏覽器上,從而下次這位獨(dú)一無二的訪客又回到該網(wǎng)絡(luò)服務(wù)器時(shí),可從該瀏覽器讀回此信息。這是很有用的,讓瀏覽器記住這位訪客的特定信息,如上次訪問的位置、花費(fèi)的時(shí)間或用戶首選項(xiàng)(如樣式表)。Cookie 是個(gè)存儲在瀏覽器目錄的文本文件,當(dāng)瀏覽器運(yùn)行時(shí),存儲在 RAM 中。一旦閣下從該網(wǎng)站或網(wǎng)絡(luò)服務(wù)器退出,Cookie 也可存儲在計(jì)算機(jī)的硬驅(qū)上。的打算是,當(dāng)訪客結(jié)束其瀏覽器對話時(shí),即終止的所有 cookie。
Cookie 有哪些用途?
Cookie 的用途之一是存儲用戶在特定網(wǎng)站上的密碼和 ID。另外,也用于存儲起始頁的首選項(xiàng)。在提供個(gè)人化查看的網(wǎng)站上,將要求閣下的網(wǎng)絡(luò)瀏覽器利用閣下計(jì)算機(jī)硬驅(qū)上的少量空間來儲存這些首選項(xiàng)。這樣,每次閣下登錄該網(wǎng)站時(shí),閣下的瀏覽器將檢查閣下是否就該唯一的服務(wù)器有任何預(yù)先定義的首選項(xiàng)(cookie)。如果有的話,瀏覽器將此 cookie 隨閣下對網(wǎng)頁的請求一起發(fā)送給服務(wù)器。Microsoft 和 Netscape 使用 cookie 在其網(wǎng)站上創(chuàng)建個(gè)人起始頁。各家公司利用 cookie 的一般用途包括:在線定貨系統(tǒng)、網(wǎng)站個(gè)人化和網(wǎng)站跟蹤。
網(wǎng)站個(gè)人化是 cookie 最有益的用途之一。例如,當(dāng)誰來到 CNN 網(wǎng)站,但并不想查看任何商務(wù)新聞。網(wǎng)站允許他將該項(xiàng)選為選項(xiàng)。從那時(shí)起(或者直到 cookie 逾期),他在訪問 CNN 網(wǎng)頁時(shí)將不會讀到商務(wù)新聞。
這些 Cookie 是如何起作用的?
文檔的 HTML 代碼中的命令行告訴瀏覽器設(shè)置某一名稱或數(shù)值的
cookie。以下是用來設(shè)置
cookie 腳本的一個(gè)普通實(shí)例。
Set-Cookie: name = VALUE;
expires = DATE;
path = PATH;
domain = DOMAIN_NAME;
那么安全性如何?HTTP Cookie 不能用來從閣下的硬驅(qū)上檢索個(gè)人數(shù)據(jù)、放置病毒、得到閣下的電子郵件地址或偷竊有關(guān)閣下身份的敏感信息;然而,HTTP Cookie 可用來跟蹤閣下在特定網(wǎng)站上的所到之處。不使用
cookie 就很難進(jìn)行網(wǎng)站跟蹤。
至于其他一切與因特網(wǎng)有關(guān)的事,如同閣下所希望的那樣是匿名的。沒有網(wǎng)站知道閣下是誰,除非閣下自己透露給網(wǎng)站。同時(shí),cookie 只是為了更好地了解使用模式并改進(jìn)網(wǎng)站訪客的效率而采用的一個(gè)網(wǎng)站跟蹤統(tǒng)計(jì)手段而已。
如果網(wǎng)站設(shè)計(jì)師旨在使網(wǎng)頁能與訪客更具互動(dòng)作用,或者若設(shè)計(jì)師計(jì)劃讓訪客自定義網(wǎng)站的外觀,則就需要使用 cookie。而且,如果閣下想要網(wǎng)站在某些情況下改變其外觀,cookie 則提供了一條快速、容易的途徑,讓閣下的 HTML 頁面按需要而改變。最新型的服務(wù)器使用 cookie 有助于數(shù)據(jù)庫的互動(dòng)性,進(jìn)而改進(jìn)網(wǎng)站的整體互動(dòng)性。