Cookie與Session
Cookie 基本介紹
當Server想要保存使用者的某些狀態,如登入資訊,頁面風格時,會發送Cookie給Client。Cookie通常是一份數對,有Cookie名與相對應的值,而Cookie會在使用者本地端的電腦系統裡保存。之後當使用者瀏覽同一網頁時,Cookie值便會隨著請求發送,如此Server就能根據Cookie值進行操作。舉例來說,許多購物網站均擁有購物車的功能,當使用者在已選取商品但未結帳前就關閉瀏覽器時,下次再登入時上次的購物車資訊仍會存在,讓使用者不用再重新去點選。
安全性考量
在使用Cookie時,最主要的問題在於Cookie是以明文的方式在網際網路上傳輸及在客戶端電腦儲存,因此我們建議儘量避免使用Cookie儲存敏感的資料。但別因此就捨棄Cookie不用,相對於Session來說,使用Cookie能減輕Server的負擔,所以要是當資料的內容不是很重要,像是用戶的個人設定,仍然可以使用Cookie。
Session 基本介紹
Session與Cookie最主要的差異在於Session是保存在Server端,而不是Client端。但事實上在使用Session時仍需要配合Cookie使用。首先,Server會傳輸名稱為PHPSESSID的cookie給client,並且在server端建立此session id的資料夾。在之後使用者瀏覽網頁時都會夾帶這個sessionid,而server即可根據此id尋找對應的資料夾。舉例來說,當我們登入網站進行瀏覽時,即使對某一主題開新頁面,也無需再重覆進行登入,這就是因為網站會透過跟著請求發送的的session id來辨認使用者。
安全性考量
相對於Cookie,Session多用來儲存敏感性的資料,實用性較高也因此常常會成為攻擊者的目標。攻擊者會想辦法取得使用者的Session id(即PHPSESSID),有了user的id,即可冒充使用者對網站進行存取。