(電子商務(wù)研究中心訊) Cookie,有時(shí)也用其復(fù)數(shù)形式Cookies,指某些網(wǎng)站為了辨別用戶(hù)身份、進(jìn)行session跟蹤而儲(chǔ)存在用戶(hù)本地終端上的數(shù)據(jù)(通常經(jīng)過(guò)加密)。定義于RFC2109(已廢棄),最新取代的規(guī)范是RFC2965。
基本信息
Cookie最早是網(wǎng)景公司的前雇員Lou Montulli在1993年3月的發(fā)明。Cookie是由服務(wù)器端生成,發(fā)送給User-Agent(一般是瀏覽器),瀏覽器會(huì)將Cookie的key/value保存到某個(gè)目錄下的文本文件內(nèi),下次請(qǐng)求同一網(wǎng)站時(shí)就發(fā)送該Cookie給服務(wù)器(前提是瀏覽器設(shè)置為啟用cookie)。Cookie名稱(chēng)和值可以由服務(wù)器端開(kāi)發(fā)自己定義,對(duì)于JSP而言也可以直接寫(xiě)入jsessionid,這樣服務(wù)器可以知道該用戶(hù)是否合法用戶(hù)以及是否需要重新登錄等。
主要用途
服務(wù)器可以利用Cookies包含信息的任意性來(lái)篩選并經(jīng)常性維護(hù)這些信息,以判斷在HTTP傳輸中的狀態(tài)。Cookies最典型的應(yīng)用是判定注冊(cè)用戶(hù)是否已經(jīng)登錄網(wǎng)站,用戶(hù)可能會(huì)得到提示,是否在下一次進(jìn)入此網(wǎng)站時(shí)保留用戶(hù)信息以便簡(jiǎn)化登錄手續(xù),這些都是Cookies的功用。另一個(gè)重要應(yīng)用場(chǎng)合是“購(gòu)物車(chē)”之類(lèi)處理。用戶(hù)可能會(huì)在一段時(shí)間內(nèi)在同一家網(wǎng)站的不同頁(yè)面中選擇不同的商品,這些信息都會(huì)寫(xiě)入Cookies,以便在最后付款時(shí)提取信息。
生存周期
Cookie可以保持登錄信息到用戶(hù)下次與服務(wù)器的會(huì)話(huà),換句話(huà)說(shuō),下次訪(fǎng)問(wèn)同一網(wǎng)站時(shí),用戶(hù)會(huì)發(fā)現(xiàn)不必輸入用戶(hù)名和密碼就已經(jīng)登錄了(當(dāng)然,不排除用戶(hù)手工刪除Cookie)。而還有一些Cookie在用戶(hù)退出會(huì)話(huà)的時(shí)候就被刪除了,這樣可以有效保護(hù)個(gè)人隱私。Cookie在生成時(shí)就會(huì)被指定一個(gè)Expire值,這就是Cookie的生存周期,在這個(gè)周期內(nèi)Cookie有效,超出周期Cookie就會(huì)被清除。有些頁(yè)面將Cookie的生存周期設(shè)置為“0”或負(fù)值,這樣在關(guān)閉瀏覽器時(shí),就馬上清除Cookie,不會(huì)記錄用戶(hù)信息,更加安全。
識(shí)別功能
如果在一臺(tái)計(jì)算機(jī)中安裝多個(gè)瀏覽器,每個(gè)瀏覽器都會(huì)在各自獨(dú)立的空間存放cookie。因?yàn)閏ookie中不但可以確認(rèn)用戶(hù),還能包含計(jì)算機(jī)和瀏覽器的信息,所以一個(gè)用戶(hù)用不同的瀏覽器登錄或者用不同的計(jì)算機(jī)登錄,都會(huì)得到不同的cookie信息,另一方面,對(duì)于在同一臺(tái)計(jì)算機(jī)上使用同一瀏覽器的多用戶(hù)群,cookie不會(huì)區(qū)分他們的身份,除非他們使用不同的用戶(hù)名登錄。
反對(duì)cookies者
一些人反對(duì)cookie在網(wǎng)絡(luò)中的應(yīng)用,他們的理由如下:
1、識(shí)別不精確
2、隱私,安全和廣告
Cookies在某種程度上說(shuō)已經(jīng)嚴(yán)重危及用戶(hù)的隱私和安全。其中的一種方法是:一些公司的高層人員為了某種目的(譬如市場(chǎng)調(diào)研)而訪(fǎng)問(wèn)了從未去過(guò)的網(wǎng)站(通過(guò)搜索引擎查到的),而這些網(wǎng)站包含了一種叫做網(wǎng)頁(yè)臭蟲(chóng)的圖片,該圖片透明,且只有一個(gè)像素大小(以便隱藏),它們的作用是將所有訪(fǎng)問(wèn)過(guò)此頁(yè)面的計(jì)算機(jī)寫(xiě)入cookie。而后,電子商務(wù)網(wǎng)站將讀取這些cookie信息,并尋找寫(xiě)入這些cookie的網(wǎng)站,隨即發(fā)送包含了針對(duì)這個(gè)網(wǎng)站的相關(guān)產(chǎn)品廣告的垃圾郵件給這些高級(jí)人員。
因?yàn)楦哂嗅槍?duì)性,使得這套系統(tǒng)行之有效,收到郵件的客戶(hù)或多或少表現(xiàn)出對(duì)產(chǎn)品的興趣。這些站點(diǎn)一旦寫(xiě)入cookie并使其運(yùn)作,就可以從電子商務(wù)網(wǎng)站那里獲得報(bào)酬,以維系網(wǎng)站的生存。
鑒于隱藏的危害性,瑞典已經(jīng)通過(guò)對(duì)cookie立法,要求利用cookie的網(wǎng)站必須說(shuō)明cookie的屬性,并且指導(dǎo)用戶(hù)如何禁用cookie。
腳本攻擊
盡管cookie沒(méi)有病毒那么危險(xiǎn),但它仍包含了一些敏感信息:用戶(hù)名,計(jì)算機(jī)名,使用的瀏覽器和曾經(jīng)訪(fǎng)問(wèn)的網(wǎng)站。用戶(hù)不希望這些內(nèi)容泄漏出去,尤其是當(dāng)其中還包含有私人信息的時(shí)候。
這并非危言聳聽(tīng),一種名為跨站點(diǎn)腳本攻擊(Cross site scripting)可以達(dá)到此目的。通??缯军c(diǎn)腳本攻擊往往利用網(wǎng)站漏洞在網(wǎng)站頁(yè)面中植入腳本代碼或網(wǎng)站頁(yè)面引用第三方法腳本代碼,均存在跨站點(diǎn)腳本攻擊的可能,在受到跨站點(diǎn)腳本攻擊時(shí),腳本指令將會(huì)讀取當(dāng)前站點(diǎn)的所有Cookie內(nèi)容(已不存在Cookie作用域限制),然后通過(guò)某種方式將Cookie內(nèi)容提交到指定的服務(wù)器(如:AJAX)。一旦Cookie落入攻擊者手中,它將會(huì)重現(xiàn)其價(jià)值。
建議開(kāi)發(fā)人員在向客戶(hù)端Cookie輸出敏感的內(nèi)容時(shí)(譬如:該內(nèi)容能識(shí)別用戶(hù)身份):
1)設(shè)置該Cookie不能被腳本讀取,這樣在一定程度上解決上述問(wèn)題。
2)對(duì)Cookie內(nèi)容進(jìn)行加密,在加密前嵌入時(shí)間戳,保證每次加密后的密文都不一樣(并且可以防止消息重放)。
3)客戶(hù)端請(qǐng)求時(shí),每次或定時(shí)更新Cookie內(nèi)容(即:基于第2小條,重新加密)
4)每次向Cookie寫(xiě)入時(shí)間戳,數(shù)據(jù)庫(kù)需要記錄最后一次時(shí)間戳(防止Cookie篡改,或重放攻擊)。
5)客戶(hù)端提交Cookie時(shí),先解密然后校驗(yàn)時(shí)間戳,時(shí)間戳若小于數(shù)據(jù)數(shù)據(jù)庫(kù)中記錄,即意味發(fā)生攻擊。
基于上述建議,即使Cookie被竊取,卻因Cookie被隨機(jī)更新,且內(nèi)容無(wú)規(guī)律性,攻擊者無(wú)法加以利用。另外利用了時(shí)間戳另一大好處就是防止Cookie篡改或重放。Cookie竊?。核鸭脩?hù)cookie并發(fā)給攻擊者的黑客。攻擊者將利用cookie信息通過(guò)合法手段進(jìn)入用戶(hù)帳戶(hù)。
Cookie篡改:利用安全機(jī)制,攻擊者加入代碼從而改寫(xiě)Cookie內(nèi)容,以便持續(xù)攻擊。 (編選:網(wǎng)經(jīng)社)