計算機網絡應用層之cookie

一、生活中的cookie
無論你知不知道Cookie是什麼,在你的生活中,肯定有使用過它。還記得你使用瀏覽器瀏覽網頁時,當你要登陸時,網頁上有一個記住密碼或自動登陸的選項,當你選擇時,你就使用了Cookie。那麼在下次訪問該網站時,你可能就已經自動地登陸了,而不需要從重輸入用戶名和密碼,至於它是怎麼實現的,我們在下面說明。

爲什麼會有Cookie的存在?在前一篇文章,我們講過,HTTP服務器是無狀態的,即它不會記錄任何的用戶和連接信息。而一個Web站點通常希望能夠識別用戶,既可能是因爲服務器想限制用戶的訪問,或可能是因爲它想把內容與用戶身份關聯起來。爲此,HTTP使用了cookie,它可以跟蹤用戶。

二、cookie技術的組成
在瞭解cookie的工作原理之前,我們先來了解一下cookie技術的組成,它由4部分組成,如下:
(1)在HTTP響應報文中有一個cookie首部行;
(2)在HTTP請求報文中有一個cookie首部行;
(3)在用戶端系統中保留有一個cookie文件,由用戶瀏覽器管理;
(4)在Web站點有一個後端數據庫;

三、cookie的工作原理
在瞭解了cookie技術的組成之後,我們來看看cookie是怎麼工作的。下面就以主機A中的瀏覽器訪問網站xxx作爲例子來分析cookie的工作原理吧。

首先主機A使用瀏覽器上網,當主機A第一次訪問xxx網站時,當請求報文到達xxx的Web服務器時,該Web服務器將產生一個唯一識別碼(例如:12345),並以此作爲索引在它的後端數據庫中產生一個表項,並用Set-cookie:首部行和剛纔產生的值爲設置HTTP響應報文的首部。這樣在HTTP響應報文的首部,我們就可以看到這樣的一個首部行——Set-cookie: 12345.

當主機A的瀏覽器收到該HTTP響應報文時,它會看到Set-cookie:首部,然後瀏覽器在它的本地cookie文件上加入一行,其中包括Set-cookie:首部行中的識別碼。

由於主機A的cookie文件已經有了用於xxx網站的表項,因此當主機A的瀏覽器繼續瀏覽xxx網站時,每請求一個Web頁面,其瀏覽器就會從它的cookie文件中獲取到xxx網站的識別碼,並放入HTTP請求報文中cookie首部行中,即加入了首部行Cookie: 12345。

當xxx網站的服務器收到該包含Cookie首部行的HTTP請求報文後,服務器通過查詢後端服務器,確定cookie標識碼對應的用戶,從而可以直接知道用戶的信息(即知道確實有一個這樣的用戶,不久前登陸過該網站)。

注意,在cookie的方式下,xxx網站的服務器可以跟蹤主機A在該站點的活動,xxx Web站點並不需要知道主機A的用戶是誰,但是,它確切地知道用戶12345訪問了哪些頁面,按照什麼順序,在什麼時間。

簡單點來說,cookie用於標識用戶,用戶首次訪問站點時,可能需要提供一個用戶標識,但在後繼的訪問中,瀏覽器向服務器傳遞一個cookie首部,供服務器識別該用戶。因此cookie可以在無狀態的HTTP上建立一個用戶會話層,允許服務器通過用戶與應用程序之間的會話對用戶進行驗證。

四、cookie帶來的問題

然而,cookie的使用可能會帶來一定的問題。
第一,就是用戶的隱私問題,從上面的討論中,我們可以看到,網站能過我們的cookie識別號,可以知道我們在什麼時候做過什麼事情。

第二,就是信息的安全問題,從上面的論述中,我們可以知道,服務器並沒有進行必要的檢查,即服務器取出包含Cookie首部行的請求報文的cookie識別號,再到後端服務器查詢,就能確定用戶,而不管這個請求報文是否是由原本的主機發送的報文。換句話來說,如果不懷好意的人,拿到了我們的cookie識別號,並用我們的cookie標識號填充HTTP請求報文,發送給xxx網站的Web服務器,就能冒充我們去做很多他想做的事情,獲得很多他們想獲得的信息。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章