當前位置:才華齋>計算機>網路技術>

Web端cookie知識介紹

網路技術 閱讀(8.45K)

首先,我們要關注什麼是cookie以及cookie是如何工作的。當對cookie的定義以及工作原理、如何獲得儲存在硬碟上的cookie以及應該怎樣對cookie進行編輯、設定有一個比較清晰地認識時,那麼cookie測試你就會遊刃有餘了。

Web端cookie知識介紹

  什麼是cookie?

cookie是web伺服器儲存在客戶端硬碟上的一小段文字資訊。這些資訊儲存後用於Web瀏覽器去檢索來自相關計算機的資訊。通常,cookie包含用於在不同網頁之間通訊的個性化使用者資料和資訊。

  為什麼使用cookie?

cookie標識著計算機上使用者的身份,並用於跟蹤使用者瀏覽整個網站頁面的過程。我們知道Web瀏覽器和Web伺服器之間的通訊是無狀態的。

比如,你訪問域名,Web瀏覽器將查詢來自網路伺服器的頁面,下次當你輸入網址的時候,瀏覽器就會發送新的請求發給網路伺服器的網頁,而整個過程中Web伺服器根本不知道前一頁已經提供過相關服務了。

如果你想讓Web伺服器知道該使用者在前一段時間的通訊歷史,就需要在Web瀏覽器和Web伺服器的互動過程中維持使用者的狀態資訊,而這正是cookie作用的地方。因此,cookie服務的目的是維持Web伺服器和使用者間的互動。

  cookie是怎樣工作的?

用來在網路上進行超文字資訊傳輸的HTTP協議負責維護cookie。事實上HTTP協議有兩種型別,無狀態的HTTP協議和有狀態HTTP協議。無狀態HTTP協議不保留以前訪問過的網頁的歷史記錄。但是有狀態HTTP協議將會保留Web瀏覽器和Web伺服器互動的一些歷史,有狀態HTTP協議將使用cookie來維持使用者互動。

當你訪問一個使用cookie的網站或網頁時,網頁中的一小段程式碼(js、php和perl等指令碼語言)將會把cookie寫入到使用者的機器中。

下面是用來寫cookie的一個例子,它可以放置任何HTML網頁內:

Set-Cookie:NAME=VALUE;expires=DATE;path=PATH;domain=DOMAIN_NAME;

譯者注:若您想模擬響應Cookie,可使用三劍客介面測試平臺Xmock模組。

當用戶訪問同一頁面或同一域以後,這個cookie將會從磁碟中被讀取並用於識別該域的同一個使用者的第二次訪問。另外需要解釋的是cookie的過期時間設定,這個時間是由使用cookie的應用決定的。

通常有兩種型別的cookie會被寫入使用者的計算機上。

1)會話cookie:從開啟瀏覽器開始,這個cookie就是活躍的,直到我們關閉瀏覽器,這個cookie才會被刪除。有些時候應用程式也會將該cookie的過期時間設定為20分鐘。

2)永久cookie:它是永久寫入使用者機器上的,有效期可以持續數月或數年。

  cookie在哪裡儲存?

任何網頁應用程式寫入的cookie都會被儲存在使用者本地硬碟的一個文字檔案中。而且cookie的儲存路徑也與瀏覽器的設定有關。不同的瀏覽器會在不同的路徑下儲存cookie。例如IE瀏覽器儲存cookie的路徑為 “C:Users Default User AppDataRoamingMicrosoftWindowsCookies”,這裡的“Default User”表示當前登入的使用者,比如 “Administrator”等。

通過瀏覽器導航選項可以很容易的發現cookie的儲存位置。在Mozilla Firefox瀏覽器的選項中,你甚至可以看到cookie的資料資訊。具體操作為:開啟Mozilla Firefox瀏覽器,點選工具- >選項- >隱私,然後點選“顯示cookie”按鈕。

  cookie是怎麼儲存的?

讓我們來舉一個例子,在Mozilla Firefox瀏覽器寫下的cookie,當在Mozilla Firefox瀏覽器開啟網址或登入rediff賬戶時,一個cookie就被寫入到你的硬碟上。要檢視此cookie只需找到上面提到的路徑點選“顯示Cookie”按鈕。點選站點下這個cookie列表。你可以看到不同rediff域名寫入的不同cookie。

  cookie的應用場景

1)要實現購物車:你可以用來維持線上訂購系統的一些狀態,能夠記住使用者想要買什麼。假設使用者在他們的購物車增加了一些產品,但是由於某種原因,使用者不希望購買這些產品,並關閉了瀏覽器視窗,而當下次相同的使用者訪問購買頁面,他是可以看到自己上一次訪問過程中在購物車新增的商品的。

2)個性化網站:使用者在瀏覽網頁時,根據個人偏好設定一些網頁為不可見,或是將某些網站設定為不可訪問,cookie將會記住使用者的設定,下次使用者在瀏覽網頁的時候,cookie會根據使用者的設定遮蔽一些網頁。

3)使用者追蹤:要在特定的時間裡,追蹤一些特殊的訪客。

4)營銷:有些公司通過cookie在使用者的機器上展示廣告。cookie可以控制這些廣告,什麼時候、以什麼樣的形式被展示,同時也可以用來判斷什麼廣告是使用者感興趣的,哪些關鍵字是使用者曾在網站上搜索過的,所有這些東西都會記錄在cookie中。

5)使用者會話:cookie可以使用使用者ID和密碼在特定的域追蹤使用者的會話。

  cookie的缺點

1)即使cookie是維持使用者互動的好方法,但是如果使用者設定瀏覽器為:寫cookie警告或完全禁止cookie,那麼包含cookie的網站將被完全禁用,使用者將不能執行任何操作,從而造成網站流量的大量丟失。

2)cookie冗餘:如果你在每一個網頁導航中寫太多cookie,使用者開啟瀏覽器選項:寫cookie警告,這足可以使使用者對你的網站敬而遠之。

3)安全問題:使用者的個人資訊被儲存在cookie中,如果有黑客劫持了使用者的cookie,則黑客可以訪問使用者的個人資訊。甚至別的域也可以讀取一些損壞的cookie,從而帶來安全問題。

4)敏感資訊:有些網站可能在cookie中儲存敏感資訊,由於涉及隱私,這麼做是禁止的。

Test Cases

1)在設計文件中的一種隱私策略是確保個人資訊或敏感資料都不要儲存在cookie中。

2)如果沒有別的選擇,必須要將敏感資料存儲存在cookie的時候,那麼敏感資料需要以一種加密的方式儲存到cookie中。

3)測試人員必須確保網站上沒有過度使用cookie。若瀏覽器頻繁的提示寫入cookie會給使用者造成很大的困擾,可能導致網站失去流量,並最終失去業務。

4)在瀏覽器的設定中禁用cookie:如果在網站中使用cookie,當用戶禁用cookie時,網站主要功能將不起作用,因此,應當確保沒有cookie時網站也是可用的。不應該由於禁用cookie而讓頁面有任何崩潰(在執行這個測試之前,請確保關閉所有瀏覽器,並且刪除所有之前寫的cookie)。

5)接受或者拒絕一些cookie:檢查網站的功能最好的辦法是不接受任何cookie。可以在web應用程式寫10個cookie,然後隨機接受一些cookie,假如接受5個,拒絕5個。我們在執行這個測試用例時可以通過設定瀏覽器選項為在寫入cookie時給出提示。在這個提示視窗中你可以接受或拒絕cookie。儘量訪問該網站的主要功能,看看頁面是否會因此崩潰或者出現數據損壞等現象。

6)刪除cookie:在測試環境下,允許網站寫入cookie,然後關閉所有瀏覽器並手動從網站中刪除所有cookie;訪問網頁並且檢查頁面的行為。

7)破壞cookie:破壞一個cookie是容易的`。前面我們已經知道cookie儲存的位置。可以在記事本中手動編輯cookie並改變一些模糊的引數的值。像改變cookie內容,cookie的名稱或cookie的有效期限,然後檢視網站的功能。在某些情況下損壞cookie能夠讀取其他域裡面的資料。在網站中這是不應該發生的。注意如果cookie是由域寫的,就不可以被其他的域訪問,比如,除非cookie被損壞或者有人試著攻擊cookie資料。

8)從web應用程式頁面檢查cookie的刪除: 在測試一些“行動跟蹤”入口網站時經常出現的場景:域已經向cookie中寫入資料,但是被這個域下的另一個網頁刪除。在“行為追蹤”或“購買行為追蹤”的網頁測試中,當用戶產生行為或是產生購買記錄的時候,需要將已經寫入磁碟的cookie刪除,從而避免同一個cookie下產生多個行為或購買記錄。適當的刪除cookie中的內容,檢查是否能夠追蹤到你的行為或是購買頁面;另外檢查cookie中同一個使用者下不會存在非法的行為或購買記錄。

9)在多個瀏覽器測試cookie:檢查你的web應用程式頁面是否能在不同的瀏覽器上寫入cookie,並且網站使用這些cookie可以正常工作,這是最重要的事情。你可以在常用的瀏覽器上測試你的web應用程式,例如不同版本的Internet explorer、Mozilla Firefox、netscape、opera等。

10)如果你的web應用程式使用cookie維護使用者的日誌狀態,並且你的應用程式使用使用者名稱和密碼記錄,在許多情況下,你可以直接在瀏覽器位址列看到登入使用者ID引數。通過改變這個引數,你可以看到其他使用者的相關資訊。假定如果以前的使用者ID是100,修改為 101,然後按enter鍵。當前使用者的訪問訊息應該顯示給使用者,但是使用者不應該能看到其他使用者的賬戶資訊。

在測試網站cookie的時候,這些都是一些常用的測試用例。你可以在這些測試場景中,通過執行多個測試用例的組合來進行web的cookie測試。如果你有不同的應用場景,你可以在下面的評論中說說你的測試用例。