2011-12-17 55 views
7

像Facebook商店這樣的網站通過cookies(客戶端)或會話(服務器端)登錄用戶?我的測試表明,他們做的第一個。做像Facebook商店這樣的網站用cookies或會話登錄用戶?

+0

如果他們將用戶登錄的信息存儲在cookie中,則每個人都可以以某人身份登錄。所以它*可能*不是這樣;) – 2011-12-17 20:36:07

+0

會話常常被鍵入存儲在cookie中的隨機值。 Cookie通常不會包含任何可識別的後果數據,如果存在,它將通過其他方式在服務器端進行驗證。 – 2011-12-17 20:38:11

+0

Cookie存儲唯一的ID。服務器使用此唯一ID進行身份驗證。 – 2011-12-17 20:44:57

回答

12

一般來說,當前登錄的敏感信息如必須存儲在服務器端 - 請記住,cookie可以由用戶自由讀取和更改。

您可能會看到的是將特定客戶端綁定到服務器上特定會話的會話cookie - 這樣服務器就知道要爲您使用哪個會話。在這種情況下,cookie所包含的唯一內容是一個漫長而隨機的會話ID - 它很長且隨機,因此不容易被攻擊者猜到。

竊取其他用戶會話cookie的行爲稱爲session hijacking

附加信息:

+0

感謝Pekka ......但你能否進一步解釋......我認爲服務器上的會話是一個文件......你爲什麼需要這兩個文件? – jon 2011-12-17 20:41:04

+1

Cookie可以加密並使用校驗和以避免被修改或閱讀:P – Esailija 2011-12-17 20:42:29

+0

@jon閱讀會話的工作方式(例如,在PHP手冊的會話章節中)。該Cookie對於Facebook知道哪個用戶具有哪個會話是必需的。 – 2011-12-17 20:42:32

2

Session chapter他們使用服務器端的會話連同一個cookie。

Cookie保存一個ID,這個ID發送到FaceBook,服務器檢查具有該ID的會話的詳細信息。

+0

感謝理查德,但爲什麼他們需要會話呢?當我們談論會話時,我們正在討論例如:$ _SESSION ['user'] – jon 2011-12-17 20:56:23

4

我認爲$_sessions背後的想法是服務器處理自己的信息,而不是從客戶端接收批量信息的速度更快,效率更高。

看看這樣說:

你(服務器)和朋友(客戶端)都議論你的其他朋友辛迪,確實你的朋友給你的信息,每一個細節她(髮色,身高等等...)?不,那會浪費時間。處理您已知的有關辛迪的信息(在服務器端的$_session文件上)並且僅接收來自您的朋友(客戶端)的唯一信息($_cookies)要快得多。

高效:「嘿,你聽說辛迪昨晚做了什麼嗎?」

效率不高:「嘿,你聽說辛迪有棕色頭髮,藍眼睛,中等身材等......昨晚做了什麼?」

顯然,這並沒有完全總結$_sessions$_cookies,但也許它可以幫助別人理解高效的短期數據管理。

0

他們probalby使用會話,然後將一些信息存儲到cookie中,比如,user_id使用session_id = ...登錄/然後檢入session_id的會話以查看用戶是否仍然登錄。 我認爲它是資源的浪費。在我看來,我將關鍵信息存儲到會話中,並將重要信息存儲到Cookie中