首先你需要了解會話和餅乾之間的區別。
會話和cookie都是key =>值存儲。但其中它們存儲對它們的安全屬性有很大的影響。
Cookie存儲在客戶機上。他們是不安全。用戶可以修改cookie的值,忘記cookie,發送更多cookie等。Cookie可以存儲很長時間(數月,數年)。由於客戶端存儲cookie,因此您不必過多擔心空間限制。請記住,所有Cookie都隨每個請求一起發送。你存儲在cookies
事情通常是像一些偏好設置或「我已經看到您的彈出問我關於問卷調查」相當無關緊要的事情。
會話數據存儲在服務器上,只有服務器可以從中讀取和寫入。用戶永遠不會看到會話中的內容。會話數據通常很快到期,比如說30分鐘到24小時之間的任何地方。
但是,您如何知道哪個會話屬於哪個訪問者?那麼,你使用會話標識符cookie。 這是您需要驗證的唯一Cookie,您需要。在PHP中,此cookie爲PHPSESSID
,當您致電session_start();
時,它會自動創建並使用。會話cookie是一個具有難以「猜測」的隨機值的cookie,這使得它很安全。
用戶將保留會話cookie。您可以找到相關的會話數據(自動使用$_SESSION
)。在會話數據中,您可以存儲用戶是否已登錄,如果是這樣的用戶,甚至可以存儲用戶擁有的權限(如小型高速緩存)。你可以把它當作一個不可篡改的鍵=>值存儲,只要確保不要在那裏存儲太多(限制取決於存儲機制)。
會話存儲在一個特定的地方;取決於你的網絡服務器和操作系統。在PHP中,您可以通過調用session_set_save_handler
來指定您自己的會話存儲處理程序。這使您可以將會話數據保存在數據庫中。
如果會話標識cookie的值以某種方式暴露出來,攻擊者可以利用劫持會話。它可以通過在WiFi接入點上使用不安全的連接來暴露(例如在酒吧中)。爲了抵制這種使用HTTPS;通過HTTPS發送的cookies經過加密並可以安全抵禦這種中間人攻擊。這就是Firesheep插件(2010年)
你明白如何劫持會話,會話工作做了?如果是這樣,爲什麼存儲一個額外的cookie更安全呢? (提示:不是。) – deceze
嗨,不,我不知道它是如何工作的。我只知道這是可能的。我也知道Session是一種Cookie,但我認爲不可訪問。 – bonny