新聞中心
"重放攻擊"大家應(yīng)該聽(tīng)說(shuō)過(guò)吧?重放攻擊時(shí)黑客常用的攻擊方式之一,攻擊者發(fā)送一個(gè)目的主機(jī)已接收過(guò)的包,來(lái)達(dá)到欺騙系統(tǒng)的目的,主要用于身份認(rèn)證過(guò)程,破壞認(rèn)證的正確性。這種攻擊會(huì)不斷惡意或欺詐性地重復(fù)一個(gè)有效的數(shù)據(jù)傳輸,重放攻擊可以由發(fā)起者,也可以由攔截并重發(fā)該數(shù)據(jù)的敵方進(jìn)行。攻擊者利用網(wǎng)絡(luò)監(jiān)聽(tīng)或者其他方式盜取認(rèn)證憑據(jù),之后再把它重新發(fā)給認(rèn)證服務(wù)器。

創(chuàng)新互聯(lián)專(zhuān)業(yè)為企業(yè)提供崇川網(wǎng)站建設(shè)、崇川做網(wǎng)站、崇川網(wǎng)站設(shè)計(jì)、崇川網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、崇川企業(yè)網(wǎng)站模板建站服務(wù),10年崇川做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
重放攻擊監(jiān)聽(tīng)http數(shù)據(jù)傳輸?shù)慕孬@的敏感數(shù)據(jù)大多數(shù)就是存放在Cookie中的數(shù)據(jù)。在web安全中的通過(guò)其他方式(非網(wǎng)絡(luò)監(jiān)聽(tīng))盜取Cookie與提交Cookie也是一種重放攻擊。所以可以看出"Cookie"這個(gè)“東東”好像很不安全。
那么今天就以本篇文章詳細(xì)給大家介紹一下Cookie是什么?Cookie基本原理與實(shí)現(xiàn)?Cookie到底存在哪些安全隱患,我們?cè)撊绾畏烙?,有沒(méi)有其他技術(shù)替代方案?
一、Cookie是什么?
官方定義:Cookie,有時(shí)也用其復(fù)數(shù)形式Cookies,指某些網(wǎng)站為了辨別用戶(hù)身份、進(jìn)行session跟蹤而儲(chǔ)存在用戶(hù)本地終端上的數(shù)據(jù)(通常經(jīng)過(guò)加密)。
通俗理解:Cookie就是服務(wù)器端為了保存某些數(shù)據(jù),或?qū)崿F(xiàn)某些必要的功能,當(dāng)用戶(hù)訪(fǎng)問(wèn)服務(wù)器時(shí),從服務(wù)器回傳到客戶(hù)端的一個(gè)或多個(gè)數(shù)據(jù),這些數(shù)據(jù)因設(shè)置的保存時(shí)間不同,故保存在瀏覽器內(nèi)存中或?qū)懭胗脩?hù)PC的硬盤(pán)當(dāng)中,當(dāng)下次用戶(hù)再次訪(fǎng)問(wèn)服務(wù)器端時(shí),則帶著這些文件去與服務(wù)器端進(jìn)行聯(lián)系,這些數(shù)據(jù)或?qū)懭胗脖P(pán)當(dāng)中的數(shù)據(jù)文件就是Cookie。
詳細(xì)簡(jiǎn)介:
眾所周知,Web協(xié)議(也就是HTTP)是一個(gè)無(wú)狀態(tài)的協(xié)議(HTTP1.0)。一個(gè)Web應(yīng)用由很多個(gè)Web頁(yè)面組成,每個(gè)頁(yè)面都有唯一的URL來(lái)定義。用戶(hù)在瀏覽器的地址欄輸入頁(yè)面的URL,瀏覽器就會(huì)向Web Server去發(fā)送請(qǐng)求。如下圖,瀏覽器向Web服務(wù)器發(fā)送了兩個(gè)請(qǐng)求,申請(qǐng)了兩個(gè)頁(yè)面。這兩個(gè)頁(yè)面的請(qǐng)求是分別使用了兩個(gè)單獨(dú)的HTTP連接。所謂無(wú)狀態(tài)的協(xié)議也就是表現(xiàn)在這里,瀏覽器和Web服務(wù)器會(huì)在第一個(gè)請(qǐng)求完成以后關(guān)閉連接通道,在第二個(gè)請(qǐng)求的時(shí)候重新建立連接。Web服務(wù)器并不區(qū)分哪個(gè)請(qǐng)求來(lái)自哪個(gè)客戶(hù)端,對(duì)所有的請(qǐng)求都一視同仁,都是單獨(dú)的連接。這樣的方式大大區(qū)別于傳統(tǒng)的(Client/Server)C/S結(jié)構(gòu),在那樣的應(yīng)用中,客戶(hù)端和服務(wù)器端會(huì)建立一個(gè)長(zhǎng)時(shí)間的專(zhuān)用的連接通道。正是因?yàn)橛辛藷o(wú)狀態(tài)的特性,每個(gè)連接資源能夠很快被其他客戶(hù)端所重用,一臺(tái)Web服務(wù)器才能夠同時(shí)服務(wù)于成千上萬(wàn)的客戶(hù)端。
但是我們通常的應(yīng)用是有狀態(tài)的。先不用提不同應(yīng)用之間的SSO,在同一個(gè)應(yīng)用中也需要保存用戶(hù)的登錄身份信息。例如用戶(hù)在訪(fǎng)問(wèn)頁(yè)面1的時(shí)候進(jìn)行了登錄,但是剛才也提到,客戶(hù)端的每個(gè)請(qǐng)求都是單獨(dú)的連接,當(dāng)客戶(hù)再次訪(fǎng)問(wèn)頁(yè)面2的時(shí)候,如何才能告訴Web服務(wù)器,客戶(hù)剛才已經(jīng)登錄過(guò)了呢?瀏覽器和服務(wù)器之間有約定:通過(guò)使用cookie技術(shù)來(lái)維護(hù)應(yīng)用的狀態(tài)。Cookie是可以被Web服務(wù)器設(shè)置的字符串,并且可以保存在瀏覽器中。如下圖所示,當(dāng)瀏覽器訪(fǎng)問(wèn)了頁(yè)面1時(shí),web服務(wù)器設(shè)置了一個(gè)cookie,并將這個(gè)cookie和頁(yè)面1一起返回給瀏覽器,瀏覽器接到cookie之后,就會(huì)保存起來(lái),在它訪(fǎng)問(wèn)頁(yè)面2的時(shí)候會(huì)把這個(gè)cookie也帶上,Web服務(wù)器接到請(qǐng)求時(shí)也能讀出cookie的值,根據(jù)cookie值的內(nèi)容就可以判斷和恢復(fù)一些用戶(hù)的信息狀態(tài)。
Cookie文件記錄了用戶(hù)的有關(guān)信息,如身份識(shí)別號(hào)碼ID、密碼、瀏覽過(guò)的網(wǎng)頁(yè)、停留的時(shí)間、用戶(hù)在Web站點(diǎn)購(gòu)物的方式或用戶(hù)訪(fǎng)問(wèn)該站點(diǎn)的次數(shù)等,當(dāng)用戶(hù)再次鏈接Web服務(wù)器時(shí),瀏覽器讀取Cookie信息并傳遞給Web站點(diǎn)。
Cookie文件信息片斷以"名/值"對(duì)(name-vaiuepairs)的形式儲(chǔ)存,一個(gè)"名/值"對(duì)僅僅是一條命名的數(shù)據(jù)。例如,訪(fǎng)問(wèn) www.goto.com網(wǎng)站,則該站點(diǎn)可能會(huì)在客戶(hù)端電腦上產(chǎn)生一個(gè)包含以下內(nèi)容的Cookie文件:UserIDA9A3BECE0563982Dwww.goto.com/。goto.com在電腦上存入了一個(gè)單一的"名/值"對(duì),其中的"名"是UserID,"值"是A9A3BECE0563982D。
Cookie文件的存放位置與操作系統(tǒng)和瀏覽器密切相關(guān),這些文件在Windows機(jī)器里叫做Cookie文件,在Macintosh機(jī)器里叫做MagicCookie文件。對(duì)Windows和IE瀏覽器而言,Cookies文件的存放位置為:
Cookie的主要功能是實(shí)現(xiàn)用戶(hù)個(gè)人信息的記錄,它最根本的用途是幫助Web站點(diǎn)保存有關(guān)訪(fǎng)問(wèn)者的信息。更概括地說(shuō),Cookie是一種保持Web應(yīng)用程序連續(xù)性(即執(zhí)行狀態(tài)管理)的方法。
HTTP協(xié)議是一種無(wú)狀態(tài)、無(wú)連接的協(xié)議,不能在服務(wù)器上保持一次會(huì)話(huà)的連續(xù)狀態(tài)信息。隨著WWW的不斷發(fā)展,HTTP的無(wú)狀態(tài)性不能滿(mǎn)足某些應(yīng)用的需求,給Web服務(wù)器和客戶(hù)端的操作帶來(lái)種種不便。在此背景下,提出HTTP的狀態(tài)管理機(jī)制———Cookie機(jī)制,它是對(duì)HTTP協(xié)議的一種補(bǔ)充,以保持服務(wù)器和客戶(hù)端的連續(xù)狀態(tài)。
二、Cookie技術(shù)的原理
以實(shí)例闡述技術(shù)原理:
假設(shè)一個(gè)用戶(hù)在進(jìn)行網(wǎng)上購(gòu)物
- 假定用戶(hù)第一次訪(fǎng)問(wèn)這個(gè)購(gòu)物網(wǎng)站,用戶(hù)瀏覽器這邊有一個(gè)Cookie文件,里面只有一行信息beay:8734,但是沒(méi)有任何與這個(gè)購(gòu)物信息有關(guān)的信息
- 用戶(hù)開(kāi)始使用常規(guī)的http請(qǐng)求消息來(lái)訪(fǎng)問(wèn),服務(wù)器收到訪(fǎng)問(wèn)以后,發(fā)現(xiàn)這是一個(gè)新用戶(hù),于是為這個(gè)用戶(hù)創(chuàng)建一個(gè)ID為1678,并把這個(gè)信息存儲(chǔ)在后端的數(shù)據(jù)庫(kù)中
- 服務(wù)器收到請(qǐng)求后向?yàn)g覽器發(fā)回響應(yīng)消息,但是在響應(yīng)消息里面多了一行信息,就是Set-cookie: 1678,客戶(hù)瀏覽器收到響應(yīng)信息后,把新增的Cookie信息添加到自己的Cookie文件中,意思是:我在這個(gè)網(wǎng)站中的ID是1678
- 當(dāng)用戶(hù)第二次再訪(fǎng)問(wèn)這個(gè)網(wǎng)站的時(shí)候,請(qǐng)求信息中就會(huì)帶上自己的Cookie信息,服務(wù)器收到以后,通過(guò)Cookie信息發(fā)現(xiàn)是之前訪(fǎng)問(wèn)過(guò)的用戶(hù),于是做出Cookie-specific action,將http響應(yīng)信息發(fā)回用戶(hù)瀏覽器
- 一周以后再次訪(fǎng)問(wèn),依然會(huì)重復(fù)4的步驟
三、常見(jiàn)的Cookie 種類(lèi)
1. Session cookie
也稱(chēng)為內(nèi)存cookie或者瞬時(shí)cookie,只存在用戶(hù)瀏覽站點(diǎn)時(shí)的內(nèi)存中。當(dāng)用戶(hù)關(guān)閉瀏覽器時(shí),瀏覽器通常會(huì)刪除session cookies。不像其他cookies,session cookies沒(méi)有分配過(guò)期時(shí)間,作為session cookie瀏覽器會(huì)自己管理它。
2. 持久性cookie
不像session cookie在瀏覽器關(guān)閉時(shí)就會(huì)過(guò)期那樣,持久性cookie是到一個(gè)特定日期過(guò)期或者過(guò)來(lái)一段時(shí)間過(guò)期。這就意味著,在cookie的整個(gè)生命周期(創(chuàng)建cookie時(shí)可以指定其生命周期),每次用戶(hù)訪(fǎng)問(wèn)cookie所屬站點(diǎn)時(shí),或者每次用戶(hù)在其他站點(diǎn)訪(fǎng)問(wèn)cookie所屬站點(diǎn)的資源(例如廣告)時(shí),cookie所攜帶的信息都會(huì)被發(fā)送到服務(wù)端。
由于這個(gè)原因,持久性cookie有時(shí)被稱(chēng)為追蹤cookie,因?yàn)閺V告系統(tǒng)可以利用它記錄用戶(hù)在一段時(shí)間內(nèi)的網(wǎng)頁(yè)瀏覽習(xí)慣信息。當(dāng)然,使用它也有一些"正當(dāng)"理由,例如保持用戶(hù)的登錄狀態(tài),避免每次訪(fǎng)問(wèn)的再次登錄。
如果過(guò)期時(shí)間到了,或者用戶(hù)手動(dòng)刪除了,這種cookie會(huì)被重置。
3. 安全cookie
安全cookie只能通過(guò)安全連接傳輸(例如,https)。不能通過(guò)非安全連接傳輸(例如,http)。這樣就不太可能被竊取。在cookie中設(shè)置一個(gè)Secure標(biāo)志就可以創(chuàng)建安全cookie。
4. HttpOnly cookie
HttpOnly cookie不能通過(guò)客戶(hù)端api獲取到。這種限制減少了通過(guò)(XSS)竊取cookie的風(fēng)險(xiǎn)。然而這種cookie也會(huì)受到跨站追蹤和跨站請(qǐng)求偽造攻擊。在cookie中添加HttpOnly可以創(chuàng)建這種cookie。
5. SameSite cookie
chrome51版本引入的一種新類(lèi)型cookie,只有請(qǐng)求和站點(diǎn)是同源的,才會(huì)發(fā)送cookie到服務(wù)器。這種限制可以緩解攻擊,例如跨站請(qǐng)求偽造攻擊。在cookie中設(shè)置SameSite標(biāo)識(shí)可以創(chuàng)建這種類(lèi)型的cookie。
6. 第三方cookie
正常情況下,cookie的域?qū)傩院蜑g覽器地址欄里顯示的域是相同的。這種cookie稱(chēng)為第一方cookie。然而第三方cookie不屬于瀏覽器地址欄顯示的域中。這種cookie通常出現(xiàn)在web頁(yè)面有外部站點(diǎn)內(nèi)容時(shí)的情況中,例如廣告系統(tǒng)。這就提供了一個(gè)潛在的能力來(lái)追蹤用戶(hù)的瀏覽歷史,廣告系統(tǒng)通常會(huì)利用這個(gè)來(lái)給每個(gè)用戶(hù)推薦相關(guān)的廣告信息。
例如,假設(shè)用戶(hù)訪(fǎng)問(wèn)了www.example.com,這個(gè)站點(diǎn)包含ad.foxytracking.com的廣告,當(dāng)這個(gè)廣告加載時(shí),會(huì)設(shè)置一個(gè)屬于廣告所在域(ad.foxytracking.com)的cookie。然后用戶(hù)訪(fǎng)問(wèn)另一個(gè)站點(diǎn),www.foo.com,這個(gè)站點(diǎn)也包含來(lái)自ad.foxytracking.com的廣告,這個(gè)廣告也會(huì)設(shè)置一個(gè)屬于ad.foxytracking.com域的cookie。最終,所有這些cookie會(huì)發(fā)送給廣告主,當(dāng)用戶(hù)加載他們的廣告或者訪(fǎng)問(wèn)他們的網(wǎng)站時(shí)。然后廣告主就可以利用這些cookie統(tǒng)計(jì)出用戶(hù)的瀏覽記錄,當(dāng)然瀏覽記錄里面的站點(diǎn)必須要包含廣告主的廣告。也就是廣告主可以利用這些cookie知道你訪(fǎng)問(wèn)了那些包含他們廣告的站點(diǎn)。
7. Supercookie
supercookie是來(lái)自于頂級(jí)域名(例如.com)或者有公共后綴(例如.co.uk)的cookie。普通cookie是來(lái)自于一個(gè)特定域名,例如example.com。
supercookie是一個(gè)潛在的安全威脅,所以經(jīng)常被瀏覽器默認(rèn)禁止的。如果瀏覽器不禁止,控制惡意站點(diǎn)的攻擊者可以設(shè)置一個(gè)supercookie,干擾或者冒充合法的用戶(hù)向其他共享頂級(jí)域名或者公共后綴的站點(diǎn)的請(qǐng)求。例如,來(lái)自.com的supercookie可以惡意影響example.com的請(qǐng)求,即便這個(gè)cookie并不是來(lái)自于example.com。可以用來(lái)偽造登錄或者修改用戶(hù)信息。
幫助降低supercookie帶來(lái)的風(fēng)險(xiǎn)。公共后綴是一個(gè)跨廠(chǎng)商的倡議,目標(biāo)是為了提供一個(gè)準(zhǔn)確的最新的域名后綴列表。舊版本瀏覽器可能沒(méi)有一份最新的列表,會(huì)容易受到來(lái)自某些域的supercookie的威脅。
"supercookie"的術(shù)語(yǔ)有時(shí)會(huì)被用來(lái)描述某些不通過(guò)HTTP cookie的追蹤技術(shù)。兩個(gè)這樣的"supercookie"機(jī)制在2011年的微軟站點(diǎn)被發(fā)現(xiàn)了:機(jī)器標(biāo)識(shí)碼cookie和ETag cookie,由于媒體的關(guān)注,微軟禁止了這樣的cookie。
8. Zombie cookie
zombie cookie是指被刪除后可以自動(dòng)再創(chuàng)建的cookie。通過(guò)把cookie內(nèi)容存儲(chǔ)在多個(gè)地方實(shí)現(xiàn),例如flash的,H5的,其他客戶(hù)端甚至服務(wù)端位置。當(dāng)缺失的cookie被檢測(cè)到,就會(huì)利用存儲(chǔ)在這些位置的數(shù)據(jù)重新創(chuàng)建cookie。
四、Cookie的安全性隱患
Cookie的目的是為用戶(hù)帶來(lái)方便,為網(wǎng)站帶來(lái)增值,一般情況下不會(huì)造成嚴(yán)重的安全威脅。Cookie文件不能作為代碼執(zhí)行,也不會(huì)傳送病毒,它為用戶(hù)所專(zhuān)有并只能由創(chuàng)建它的服務(wù)器來(lái)讀取。另外,瀏覽器一般只允許存放300個(gè)Cookie,每個(gè)站點(diǎn)最多存放20個(gè)Cookie,每個(gè)Cookie的大小限制為4KB,因此,Cookie不會(huì)塞滿(mǎn)硬盤(pán),更不會(huì)被用作"拒絕服務(wù)"攻擊手段。
但是,Cookie作為用戶(hù)身份的替代,其安全性有時(shí)決定了整個(gè)系統(tǒng)的安全性,Cookie的安全性問(wèn)題不容忽視。
1. Cookie欺騙
Cookie記錄了用戶(hù)的帳戶(hù)ID、密碼之類(lèi)的信息,通常使用MD5方法加密后在網(wǎng)上傳遞。經(jīng)過(guò)加密處理后的信息即使被網(wǎng)絡(luò)上一些別有用心的人截獲也看不懂。然而,現(xiàn)在存在的問(wèn)題是,截獲Cookie的人不需要知道這些字符串的含義,只要把別人的Cookie向服務(wù)器提交,并且能夠通過(guò)驗(yàn)證,就可以冒充受害人的身份登陸網(wǎng)站,這種行為叫做Cookie欺騙。
非法用戶(hù)通過(guò)Cookie欺騙獲得相應(yīng)的加密密鑰,從而訪(fǎng)問(wèn)合法用戶(hù)的所有個(gè)性化信息,包括用戶(hù)的E-mail甚至帳戶(hù)信息,對(duì)個(gè)人信息造成嚴(yán)重危害。
2. Cookie截獲
Cookie以純文本的形式在瀏覽器和服務(wù)器之間傳送,很容易被他人非法截獲和利用。任何可以截獲Web通信的人都可以讀取Cookie。
Cookie被非法用戶(hù)截獲后,然后在其有效期內(nèi)重放,則此非法用戶(hù)將享有合法用戶(hù)的權(quán)益。例如,對(duì)于在線(xiàn)閱讀,非法用戶(hù)可以不支付費(fèi)用即可享受在線(xiàn)閱讀電子雜志。
Cookie截獲的手段有以下一些:
(1) 用編程手段截獲Cookie。
下面分析其手法,該方法分兩步完成:
步驟一:定位需要收集Cookie的網(wǎng)站,對(duì)其進(jìn)行分析并構(gòu)造URL。 首先打開(kāi)要收集Cookie的網(wǎng)站,這里假設(shè)是http://www.XXX.net,登陸網(wǎng)站輸入用戶(hù)名"
將其中"
" "再試,如果執(zhí)行成功,就開(kāi)始構(gòu)造URL:
其中http://www.cbifamily.org/cbi.php是用戶(hù)能夠控制的某臺(tái)主機(jī)上的一個(gè)腳本。需要注意的是"%2b"為符號(hào)"+"的URL編碼,因?yàn)?+"將被作為空格處理。該URL即可在論壇中發(fā)布,誘使別人點(diǎn)擊。
步驟二:編制收集Cookie的PHP腳本,并將其放到用戶(hù)可以控制的網(wǎng)站上,當(dāng)不知情者點(diǎn)擊了構(gòu)造的URL后可以執(zhí)行該P(yáng)HP代碼。該腳本的具體內(nèi)容如下:
將這段代碼放到網(wǎng)絡(luò)里,則能夠收集所有人的Cookie。如果一個(gè)論壇允許HTML代碼或者允許使用Flash標(biāo)簽,就可以利用這些技術(shù)收集Cookie的代碼放到論壇里,然后給帖子取一個(gè)吸引人的主題,寫(xiě)上有趣的內(nèi)容,很快就可收集到大量的Cookie。在論壇上,有許多人的密碼就是被這種方法盜走的。
(2) 利用Flash的代碼隱患截獲Cookie。
Flash中有一個(gè)getURL()函數(shù)。Flash可以利用這個(gè)函數(shù)自動(dòng)打開(kāi)指定的網(wǎng)頁(yè),它可能把用戶(hù)引向一個(gè)包含惡意代碼的網(wǎng)站。例如,當(dāng)用戶(hù)在電腦上欣賞Flash動(dòng)畫(huà)時(shí),動(dòng)畫(huà)幀里的代碼可能已經(jīng)悄悄地連上網(wǎng),并打開(kāi)了一個(gè)極小的包含有特殊代碼的頁(yè)面,這個(gè)頁(yè)面可以收集Cookie、也可以做一些其他有害的事情。網(wǎng)站無(wú)法禁止Flash的這種作為,因?yàn)檫@是Flash文件的內(nèi)部功能。
(3) Cookie泄漏網(wǎng)絡(luò)隱私
Cookie導(dǎo)致網(wǎng)絡(luò)隱私泄密的主要原因是:商業(yè)利益驅(qū)動(dòng)。隨著電子商務(wù)的興起和互聯(lián)網(wǎng)上巨大商機(jī)的出現(xiàn),一些網(wǎng)站和機(jī)構(gòu)濫用Cookie,未經(jīng)訪(fǎng)問(wèn)者的許可,利用搜索引擎技術(shù)、數(shù)據(jù)挖掘技術(shù)甚至是網(wǎng)絡(luò)欺騙技術(shù)搜集他人的個(gè)人資料,達(dá)到構(gòu)建用戶(hù)數(shù)據(jù)庫(kù)、發(fā)送廣告等營(yíng)利目的,造成用戶(hù)個(gè)人隱私的泄漏。"Cookie信息傳遞的開(kāi)放性。Cookie文件具有特殊的傳遞流程 和文本特性,在服務(wù)器和客戶(hù)端之間傳送未經(jīng)安全加密的Cook-ie文件,易導(dǎo)致個(gè)人信息的泄密。
五、防范Cookie泄密的安全措施
面對(duì)Cookie的安全問(wèn)題,如何才能安全地應(yīng)用Cookie呢?
1. 加強(qiáng)安全防范意識(shí)
Cookie相對(duì)來(lái)說(shuō)是無(wú)害的,但它能用于跟蹤用戶(hù),使用Cookie必須意識(shí)到其固有的安全弱點(diǎn)。
保存在Cookie中的內(nèi)容,完全有可能是用戶(hù)的私人數(shù)據(jù)。例如,網(wǎng)站為了方便用戶(hù),利用Cookie來(lái)保存會(huì)員的注冊(cè)信息:電子郵件地址、網(wǎng)站的用戶(hù)名、用戶(hù)密碼、信用卡號(hào)碼等,以便用戶(hù)以后登錄該網(wǎng)站時(shí)不用重新輸入這些數(shù)據(jù)。如果有人盜取了這樣的Cookie文件,他就可以冒充登錄網(wǎng)站,這將對(duì)用戶(hù)的個(gè)人信息安全構(gòu)成不可預(yù)測(cè)的威脅。
因此,只在Cookie中保存一些不重要的數(shù)據(jù),如用戶(hù)首選項(xiàng)或其它對(duì)應(yīng)用程序沒(méi)有重大影響的信息。如果確實(shí)需要在Cook-ie中保存某些敏感信息,就要對(duì)其加密,以防被他人盜用??梢詫?duì)Cookie的屬性進(jìn)行設(shè)置, 使其只能在使用安全套接字層(SSL)的連接上傳輸。SSL并不能防止保存在用戶(hù)計(jì)算機(jī)上的Cookie被他人讀取或操作,但能防止Cookie在傳輸途中被他人截獲。
2. 配置安全的瀏覽器
IE和Netscape瀏覽器的工具欄里,都有禁止Cookie的設(shè)置選項(xiàng),都可以設(shè)置當(dāng)某個(gè)站點(diǎn)要在用戶(hù)的計(jì)算機(jī)上創(chuàng)建Cookie時(shí),是否給出提示。這樣用戶(hù)就可以選擇允許或拒絕創(chuàng)建Cook-ie。需要注意的是,某些網(wǎng)站的應(yīng)用必須使用Cookie,簡(jiǎn)單地禁止可能導(dǎo)致無(wú)法正常瀏覽此類(lèi)網(wǎng)站。
使用IE6會(huì)更安全。最新的IE6提供了多種隱私保護(hù)功能,包括:查看網(wǎng)站的P3P隱私策略,以了解該網(wǎng)站如何使用個(gè)人可識(shí)別信息;通過(guò)Cookie隱私設(shè)置決定是否允許將網(wǎng)站的Cookie保存在計(jì)算機(jī)上;在訪(fǎng)問(wèn)不符合隱私設(shè)置條件的站點(diǎn)時(shí)發(fā)出隱私警報(bào)。用戶(hù)可以有選擇性地設(shè)置Cookie。
3. 安裝Cookie管理工具
(1) CookieCrusher
LimitSoftware公司的Crusher適用于Netscape用戶(hù),其功能有:管理計(jì)算機(jī)上已有的Cookie、設(shè)置禁止或允許創(chuàng)建Cookie的網(wǎng)站列表、在創(chuàng)建新Cookie與修改已經(jīng)存在的Cookie時(shí)發(fā)出警告、禁止第三方網(wǎng)站Cookie、實(shí)時(shí)控制接受或拒絕來(lái)自站點(diǎn)的Cookie、記錄Cookie活動(dòng)日志、編輯Cookie等,并且在網(wǎng)上瀏覽時(shí),程序獨(dú)創(chuàng)的分析功能可以自動(dòng)確定網(wǎng)站要求創(chuàng)建的Cookie的目的,如:判斷網(wǎng)站是把Cookie用于存儲(chǔ)用戶(hù)輸入的資料還是準(zhǔn)備利用Cookie跟蹤用戶(hù)的瀏覽習(xí)慣等。
(2) CookiePaI
除了瀏覽器能使用Cookie, 其它的互聯(lián)網(wǎng)軟件也可能使用,如郵件程序等。為了維護(hù)網(wǎng)絡(luò)隱私的安全,同時(shí)又能保證一些互聯(lián)網(wǎng)軟件正確地使用Cookie文件,可以安裝Kooka-burraSoftware公司的支持多種軟件的Cookie管理工具CookiePaI。它專(zhuān)門(mén)用于Cookie管理,支持用戶(hù)查看、刪除、編輯已經(jīng)存在的Cookie,自動(dòng)地實(shí)時(shí)控制是否接受Cookie,根據(jù)過(guò)期時(shí)間過(guò)濾Cookie,它還能夠記錄Cookie的活動(dòng),編輯拒絕或允許Cookie的網(wǎng)站列表。
4. 刪除內(nèi)存中的Cookies
Cookie的信息并不都是以文件形式存放在硬盤(pán)中,還有部分信息保存在內(nèi)存里。這類(lèi)Cookie通常是用戶(hù)在訪(fǎng)問(wèn)某些特殊網(wǎng)站時(shí),由系統(tǒng)自動(dòng)在內(nèi)存中生成的。一旦訪(fǎng)問(wèn)者離開(kāi)該網(wǎng)站,系統(tǒng)又自動(dòng)將Cookie從內(nèi)存中刪除。對(duì)此,需要借助注冊(cè)表編輯器來(lái)修改系統(tǒng)設(shè)置,運(yùn)行Regedit,找到如下鍵值:
HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCur-rentversionInternetSettingsCacheSpeciaIPathsCookies,這是Cookies在內(nèi)存中的鍵值,把這個(gè)鍵值刪除。右鍵單擊"Cook-ies",再單擊快捷菜單中的"刪除"命令確認(rèn)刪除。
5. 使用AAS技術(shù)
2002年,美國(guó)IngrianNetworks公司發(fā)表了可以使Web站點(diǎn) 免受"CookiePoisoning(Cookie篡改)"攻擊的平臺(tái)"ActiveAppIi-cationSecurity(AAS)"。AAS平臺(tái)能對(duì)Cookie內(nèi)部的重要信息進(jìn)行加密處理,并附上電子簽名。Web服務(wù)器每次和客戶(hù)端進(jìn)行通信時(shí),將利用電子簽名對(duì)Cookie的內(nèi)容進(jìn)行確認(rèn)。如果惡意用戶(hù)刪除了電子簽名或者更改了信息內(nèi)容,將會(huì)使電子簽名和Cookie的內(nèi)容無(wú)法再匹配。這時(shí),AAS便會(huì)阻止這條Cookie并拒絕向Web站點(diǎn)返回信息。另外,該平臺(tái)還對(duì)Cookie內(nèi)容進(jìn)行了3DES加密,解密需要口令,通過(guò)這種方法安全地保存Cookie。WWW服務(wù)器和客戶(hù)端之間的通信還全部利用了SSL連接方式,以確保通信路由的安全。通過(guò)綜合運(yùn)用電子簽名、加密、SSL連接等技術(shù)組成強(qiáng)效的安全方案,可以排除通信路由及數(shù)據(jù)存儲(chǔ)兩方面存在的脆弱性,杜絕對(duì)Cookie的篡改。
六、Cookie的替代方案
有些可以使用cookie實(shí)現(xiàn)的方案也可以使用其他機(jī)制實(shí)現(xiàn)。
1. JSON Web Tokens
(JWT)是一個(gè)自包含的信息包,可以用來(lái)存儲(chǔ)用戶(hù)標(biāo)識(shí)以及認(rèn)證信息。可以被用來(lái)代替session cookie。和cookie自動(dòng)附加到每個(gè)HTTP請(qǐng)求的方式不一樣,JWTs必須被web應(yīng)用明確指定附加到那個(gè)HTTP請(qǐng)求上。
2. HTTP 認(rèn)證
HTTP包含基本認(rèn)證以及摘要認(rèn)證協(xié)議,利用這些協(xié)議只有在提供了正確的用戶(hù)名和密碼后才能訪(fǎng)問(wèn)到web頁(yè)面。如果服務(wù)端需要類(lèi)似的認(rèn)證信息來(lái)確保web頁(yè)面的訪(fǎng)問(wèn)權(quán)限,那么瀏覽器每次頁(yè)面請(qǐng)求的時(shí)候都要發(fā)送這些認(rèn)證信息。這些認(rèn)證信息也可以用來(lái)追蹤用戶(hù)。
3. IP 地址
有些用戶(hù)可能會(huì)被基于訪(fǎng)問(wèn)頁(yè)面的電腦IP地址追蹤過(guò),服務(wù)端知道當(dāng)前正在運(yùn)行瀏覽器的電腦的IP地址,理論上可以對(duì)這個(gè)IP地址關(guān)聯(lián)一個(gè)用戶(hù)session。
然后IP地址通常不是一個(gè)可靠的追蹤session或者標(biāo)識(shí)用戶(hù)的方法。許多電腦設(shè)計(jì)的時(shí)候就是為了讓一個(gè)單獨(dú)用戶(hù)使用的,例如辦公PC,家庭PC會(huì)在網(wǎng)絡(luò)地址轉(zhuǎn)換協(xié)議下共享一個(gè)公共的IP地址。而且某些系統(tǒng),例如設(shè)計(jì)的時(shí)候就是為了保持匿名性的,利用IP地址追蹤用戶(hù)顯然是不合適的,也是不可能的。
4. URL 查詢(xún)字符串
一個(gè)更精確的技術(shù)是基于URL中嵌入信息。URL中的查詢(xún)字符串部分通常就是為了實(shí)現(xiàn)這個(gè)目的的,當(dāng)然也可以使用其他部分。Java Servlet和PHP session機(jī)制都是使用這種機(jī)制,如果cookie被禁止了。這種方法由服務(wù)端在web頁(yè)面的所有鏈接中追加包含一個(gè)獨(dú)立session標(biāo)識(shí)的查詢(xún)字符串組成。當(dāng)用戶(hù)點(diǎn)擊了其中了一個(gè)鏈接,瀏覽器把查詢(xún)字符串傳給服務(wù)端,允許服務(wù)端識(shí)別用戶(hù)維持狀態(tài)。這些類(lèi)型的查詢(xún)字符串非常像cookie,都包含任意的信息供服務(wù)端選擇,都會(huì)隨請(qǐng)求返回給服務(wù)端。然而其中還是有點(diǎn)不同的。由于查詢(xún)字符串是URL中的一部分,如果URL后面被重復(fù)發(fā)送了,那么上面附加的相同信息將會(huì)被發(fā)送到服務(wù)端,這樣可能會(huì)產(chǎn)生混亂。例如,如果用戶(hù)的偏好信息被放在了查詢(xún)字符串中,用戶(hù)把這個(gè)url通過(guò)郵件發(fā)給了另一個(gè)用戶(hù),那么這些偏好信息就會(huì)變成另一個(gè)用戶(hù)的。而且如果相同用戶(hù)從不同的源多次訪(fǎng)問(wèn)相同的頁(yè)面,這樣不能確保每次使用相同的查詢(xún)字符串。例如,如果一個(gè)用戶(hù)第一次通過(guò)一個(gè)頁(yè)面的內(nèi)部站點(diǎn)訪(fǎng)問(wèn)了一個(gè)頁(yè)面,然后第二次又通過(guò)外部的搜索引擎訪(fǎng)問(wèn)到這個(gè)頁(yè)面,這樣查詢(xún)字符串可能會(huì)不同。如果在這種情況下使用cookie,cookie可以是相同的。
使用查詢(xún)字符串其他缺點(diǎn)就是安全問(wèn)題。在查詢(xún)字符串中存儲(chǔ)標(biāo)識(shí)session的數(shù)據(jù)可以導(dǎo)致session固定攻擊,referer日志攻擊以及其他安全漏洞。把session標(biāo)識(shí)轉(zhuǎn)成HTTP cookie更安全。
5. 隱藏的表單字段
另一種回話(huà)跟蹤是使用隱藏域的web表單。這個(gè)技術(shù)很像使用url查詢(xún)字符串去保存信息,也有一些優(yōu)點(diǎn)和缺點(diǎn)。事實(shí)上,如果通過(guò)HTTP的GET方法處理表單,那么這種技術(shù)就和使用URL查詢(xún)字符串類(lèi)似,因?yàn)镚ET方法會(huì)把表單字段作為查詢(xún)字符串追加到URL后面。但是大部分表單都是通過(guò)HTTP的POST方法處理,這樣表單信息包括隱藏的字段都會(huì)在HTTP請(qǐng)求體中發(fā)送,這樣既不是URL中的一部分,也不是cookie的一部分。
從追蹤的角度來(lái)看這種方式有兩種好處。第一,把追蹤信息放在HTTP請(qǐng)求體中而不是URL中意味著它不會(huì)被普通用戶(hù)察覺(jué)。第二,當(dāng)用戶(hù)復(fù)制URL的時(shí)候不會(huì)復(fù)制到session信息。
6. "window.name" DOM 屬性
所有的現(xiàn)代瀏覽器都可以通過(guò)js使用DOM屬性window.name存儲(chǔ)一個(gè)相當(dāng)大的數(shù)據(jù)(2-23M)。這個(gè)數(shù)據(jù)可以用來(lái)代替session cookie也是可以跨域的。這個(gè)技術(shù)可以和JSON對(duì)象一起使用來(lái)存儲(chǔ)客戶(hù)端上的復(fù)雜session變量集合。
不足就是美國(guó)單獨(dú)的窗口或者tab頁(yè)剛開(kāi)始打開(kāi)的時(shí)候會(huì)有一個(gè)空的window.name屬性。而且,這個(gè)屬性可以用來(lái)追蹤不同站點(diǎn)的訪(fǎng)問(wèn)者。
在某些方面,這種方法可能比cookie更加方便,因?yàn)樗膬?nèi)容不會(huì)像cookie那樣在每次請(qǐng)求的時(shí)候自動(dòng)的發(fā)送給服務(wù)端,所以它不易收到網(wǎng)絡(luò)cookie嗅探攻擊。然而如果不采用特殊的方法保護(hù)數(shù)據(jù),它很容易受到其他攻擊,因?yàn)閿?shù)據(jù)可以被在同一個(gè)窗口或者tab中打開(kāi)的其他站點(diǎn)獲取到。
7. 廣告主標(biāo)識(shí)碼
蘋(píng)果使用了追蹤技術(shù)稱(chēng)為"廣告主標(biāo)識(shí)碼"(IDFA)。這種技術(shù)會(huì)給每個(gè)購(gòu)買(mǎi)蘋(píng)果產(chǎn)品的用戶(hù)分配一個(gè)唯一標(biāo)識(shí)。這個(gè)唯一標(biāo)識(shí)會(huì)被蘋(píng)果網(wǎng)絡(luò)廣告系統(tǒng)使用,來(lái)確定用戶(hù)正在查看或者回復(fù)的廣告。
8. ETag
因?yàn)闉g覽器會(huì)緩存ETags,然后在后續(xù)的請(qǐng)求相同資源時(shí)返回,追蹤服務(wù)器可以簡(jiǎn)單的復(fù)制從瀏覽器接受的任意ETag來(lái)確保ETag長(zhǎng)久留存(就像持久化cookie一樣)。增加緩存頭也可以加強(qiáng)ETag數(shù)據(jù)的保存。
在某些瀏覽器中可以通過(guò)清理緩存來(lái)清楚ETag數(shù)據(jù)。
9. web 存儲(chǔ)
一些web瀏覽器支持持久化機(jī)制,允許頁(yè)面本地存儲(chǔ)信息以后使用。
HTML5標(biāo)準(zhǔn)(絕大多數(shù)現(xiàn)代瀏覽器在某種程度上都支持)包含了一個(gè)Javascript API叫做:local storage和session storage。local storage的行為和持久化cookie類(lèi)似,而session storage的行為和session cookie的行為類(lèi)似,也就是session storage是綁定在一個(gè)單獨(dú)的tab或者窗口的生命周期中的(也就是頁(yè)面session),而session cookie是針對(duì)整個(gè)瀏覽器的。
IE支持在瀏覽器歷史中持久化信息,在瀏覽器的收藏夾中,以一個(gè)XML格式存儲(chǔ),或者直接在頁(yè)面中存儲(chǔ)到硬盤(pán)。
一些web瀏覽器插件也包含持久化機(jī)制。例如Flash有Local shared object,Silverlight有 Isolated storage。
10. 瀏覽器緩存
瀏覽器緩存也可以用來(lái)存儲(chǔ)信息,利用這些信息也可以用來(lái)追蹤用戶(hù)。這項(xiàng)技術(shù)利用的真相是當(dāng)瀏覽器判斷出來(lái)緩存的已經(jīng)是最新資源時(shí)可以利用緩存而不是重新從站點(diǎn)下載。
例如,一個(gè)站點(diǎn)托管了一個(gè)js文件,這個(gè)js文件可以給用戶(hù)指定一個(gè)唯一標(biāo)識(shí)(例如,var userId = 3243242)。只要用戶(hù)訪(fǎng)問(wèn)之后,每次用戶(hù)再訪(fǎng)問(wèn)這個(gè)頁(yè)面時(shí),這個(gè)文件都會(huì)從緩存中獲取而不是從服務(wù)端獲取。所以它的內(nèi)容永遠(yuǎn)不會(huì)變。
新聞標(biāo)題:“黑客”入門(mén)學(xué)習(xí)之“Cookie技術(shù)詳解”
網(wǎng)址分享:http://m.fisionsoft.com.cn/article/cciscij.html


咨詢(xún)
建站咨詢(xún)
