1. 程式人生 > >Cookies 簡介以及存在的安全隱患

Cookies 簡介以及存在的安全隱患

Cookies是涉及到計算機使用安全的一個非常重要的檔案,本文對其基本情況及使用時需要注意的防範和安全問題進行了闡述。 

什麼是Cookies

Cookie 是一個鍵值對(客戶端)

Cookie是由伺服器端生成,傳送給User-Agent(一般是瀏覽器),瀏覽器會將Cookie的key/value儲存到某個目錄下的文字檔案內,下次請求同一網站時就傳送該Cookie給伺服器(前提是瀏覽器設定為啟用cookie)。Cookie名稱和值可以由伺服器端開發自己定義,對於JSP而言也可以直接寫入jsessionid,這樣伺服器可以知道該使用者是否合法使用者以及是否需要重新登入等。

Cookies 是一個檔案
當你在瀏覽網站的時候,Web伺服器會先送一小段資料放在你的計算機上,Cookie 會幫你把在網頁上所輸入的文字或是一些選擇,都記錄下來。當下次你再光臨同一個網站,Web伺服器會先看看有沒有它上次留下的Cookie資料,有的話,就會依據Cookie裡的內容來判斷使用者,送出特定的網頁內容給你。這一小段資料就被稱為Cookies。 

Cookies 是一種技術
Cookies是一種能夠讓網站伺服器把少量資料儲存到客戶端的硬碟或記憶體,或是從客戶端的硬碟讀取資料的一種技術。即當我們瀏覽某個網站時,由Web伺服器放置於硬碟上的一個很小的文字文件(Cookies),它能夠記錄使用者的ID、密碼、瀏覽過的網頁、訪問次數、訪問時間、停留的時間和使用者進入站點的路徑等資訊。當我們再次來到該網站時,網站通過讀取Cookies,得知我們的相關資訊,就能夠做出相應的動作,如在頁面顯示歡迎的標語,或不用我們再輸入ID、密碼就可以直接登入等。從本質上講,Cookies能夠看作是個人的身份證,但它不能作為程式碼執行,也不會傳送病毒,且為個人所專有,並只能由提供它的伺服器來讀取。

總之,網站可以通過Cookies檔案記錄使用者的隱私,瞭解使用者瀏覽的資訊。 
一個網站只能取得它放在使用者本人電腦中的資訊,無法從其它的Cookies文件中取得資訊,也無法得到使用者電腦上的其它任何東西。 Cookies中的內容大多數經過了加密處理,因此一般使用者看來只是一些毫無意義的字母數字組合,只有伺服器的CGI處理程式才知道他們真正的含義,通過一些軟體我們可以檢視到更多的內容,如Cookie Pal軟體等。

Cookie 的特點

Cookie記憶體大小受限

Cookie具有生命週期

Cookie可以保持登入資訊到使用者下次與伺服器的會話,換句話說,下次訪問同一網站時,使用者會發現不必輸入使用者名稱和密碼就已經登入了(當然,不排除使用者手工刪除Cookie)。而還有一些Cookie在使用者退出會話的時候就被刪除了,這樣可以有效保護個人隱私。

 Cookie在生成時就會被指定一個Expire值,這就是Cookie的生存週期,在這個週期內Cookie有效,超出週期Cookie就會被清除。有些頁面將Cookie的生存週期設定為“0”或負值,這樣在關閉瀏覽器時,就馬上清除Cookie,不會記錄使用者資訊,更加安全。

Cookie滿足同源策略

雖然網站images.google.com與網站www.google.com同屬於Google,但是域名不一樣,二者同樣不能互相操作彼此的Cookie。

問題來了 舉個例子:

訪問玩zhidao.baidu.com 再訪問wenku.baidu.com還需要重新登陸百度賬號嗎?

解決辦法:

設定document.domain = ‘baidu.com’;    

讓頁面屬於這個基礎域名下(那麼此頁面和任何二級域名為baidu.com的)

Cookie 的作用

  1. 有些網站據此統計使用者資訊,可以為使用者實現個性化服務,比如:使用者可以在不鍵入使用者名稱和密碼的情況下直接進入曾經瀏覽的某些站點;
  2. Cookies還可以加快瀏覽網頁的速度等。 

Cookies的安全問題

使用者不用害怕自己的行蹤都被網站掌握,這些資訊在一般情況下不會帶來什麼大麻煩。 不過,自己被網站悄悄跟蹤實在不是件愉快的事,更何況,難免有些惡意站點通過這個“小甜餅”給使用者製造點小麻煩,比如把E-mail地址等資訊賣給商業網站,使使用者的信箱充滿垃圾郵件等。所以,隨著Cookies技術與使用者隱私權的矛盾日益突出,有兩個 Cookies的安全問題需要引起使用者的關注。 

Cookie欺騙 

Cookie記錄著使用者的帳戶ID、密碼等資訊,如果在網上傳遞,通常使用的是MD5方法加密,這樣經過加密後的資訊即使被網路上一些別有用心的人截獲,通常也看不懂。然而現在遇到的問題是,截獲Cookie的人不需要知道這些字串的含義,而只要把別人的Cookie向伺服器提交,並且能夠通過驗證,他們就可以冒充受害人的身份登陸網站,這種方法叫做Cookie欺騙。Cookie欺騙實現的前提條件是伺服器的驗證程式存在漏洞,並且冒充者要獲得被冒充的人的Cookie資訊。目前網站的驗證程式要排除所有非法登入是非常困難的,而且獲得別人的Cookie是很容易的:用支援Cookie的語言編寫一小段程式碼就可以實現,只要把這段程式碼放到網路裡,那麼所有人的Cookie都能夠被收集。至於如何防範,目前還沒有特效藥,只能使用通常的防護方法,不要在論壇裡使用重要的密碼,也不要使用IE自動儲存密碼的功能,以及儘量不登陸不瞭解底細的網站。 

Flash的程式碼隱患 

Flash中有一個get URL()函式,Flash可以利用這個函式自動開啟指定的網頁,因此它可能把使用者引向一個包含惡意程式碼的網站。打個比方,當你在自己電腦上欣賞精美的Flash動畫時,動畫幀裡的程式碼可能已經悄悄地連上網,並打開了一個極小的包含有特殊程式碼的頁面,這個頁面可以收集你的Cookie,也可以做一些其它的事情,比如在你的機器上種植木馬甚至格式化你的硬碟等等。對於Flash的這種行為,網站是無法禁止的,因為這是Flash檔案的內部行為。因此,對於使用者來說,如果是在本地瀏覽儘量開啟防火牆,如果防火牆提示向外傳送的資料包並不為你知悉,最好禁止;如果是在Internet上欣賞,最好找一些知名的大網站。

如何防範Cookies中資訊被利用

Cookies檔案是在無聲無息中伴隨瀏覽器進入我們本地硬碟的,當我們瀏覽某個站點時,該站點非常可能將記錄我們隱私的Cookies檔案上傳到本地硬碟。那麼我們該怎麼防範阻止Cookies檔案洩露我們的隱私呢?有多種方法可供借鑑。 
第一種是:

方法通過瀏覽器設定拒絕計算機接收Cookies檔案即可。進入系統開啟IE瀏覽器,通過選單欄中的“工具→Internet選項”開啟Internet設定視窗,找到“隱私”標籤,將設定的滑動按鈕調節到最高,這樣將阻止來自所有網站的Cookie,而且計算機上的現有Cookie檔案都將不能被網站讀取,完成設定,所有站點都不會將Cookie檔案強制塞入我們的計算機,我們的隱私也不會再洩露了。 
第二種是:

每次下網時,將所有的Cookies檔案刪除。開啟瀏覽器,在選單欄上單擊“工具→Internet選項”,在“常規”選項卡中有個“Internet臨時檔案”項,點選“刪除Cookies”按鈕,就能把瀏覽器中所有的Cookies全部刪除掉。點選“設定”按鈕,通過“檢視檔案”,找出在你的電腦裡留下了Cookies的網站,把那些不希望留下的Cookies刪除。為了不再讓討厭的Cookies再出現在電腦中,那麼最好自己設定一下,選中“隱私”選項卡,拖動滑塊,可對Cookies作6種設定,從照單全收,到全盤拒之,讓你自由做主。還有一些特殊Cookie不是以文字檔案形式存在,而是儲存在記憶體中,這類Cookie通常是使用者在訪問某些特殊網站時,由系統自動在記憶體中生成,一旦訪問者離開該網站又自動將Cookie從記憶體中刪除。這種情況下上述兩法對這些 Cookie就無能為力了,而“登錄檔法”可以彌補這些不足。單擊“開始”選單,再單擊“執行”,然後在“開啟”框中鍵入“regedit”,單擊“確定”按鈕,開啟“登錄檔編輯器”視窗;依次展開“HKEY→LOCAL→MACHINE→SOFTWARE→Microsoft→Windows→Current Version→Internet Settings→Cache Special Paths→Cookies”分支,右鍵單擊“Cookies”,然後單擊快捷選單中的“刪除”命令,當系統提示確認刪除時,請單擊“是”按鈕後關閉“登錄檔編輯器”視窗。 
除了如上所述手動進行設定外,還有一個簡便的方法是安裝軟體來保護使用者的Cookie檔案,這類軟體比較多,可以到各大軟體下載站點去下載。