2012-09-03 44 views
1

我是新來的餅乾。試圖瞭解我的網站在用戶登錄時設置的Cookie的結構。我使用Yii構建PHP,我也在config中啓用了cookie驗證。只是想確定它是否正常工作(使用HMAC令牌)以及我是否面臨任何漏洞。餅乾解剖

dd3b7ffe10018a899b39986a9d94dfd3b64e7e4as:248: 「05035a5ae619356a622ed6ed805b6695a4fd6c44a:4:{I 0,S:18:」 [email protected] 「; I:1; S:18:」 [email protected]「; I: 2; I:604800; I:3;一個:4:{S:6: 「參數userid」; S:2: 「10」; S:8: 「用戶名」,S:18: 「[email protected]」 ; S:4: 「類型」; S:10: 「診斷」; S:6: 「狀態」; S:7: 「待定」;}}「;

cookie名稱本身是隨機的32個字符的字母數字序列。我也有一個phpsession cookie單獨存儲會話ID。這裏[email protected]是用戶名,類型和狀態是應用程序相關的變量。 我以爲cookies使用=來分配值,但在這裏我看到:被使用。它是否正確 ?

回答

3

這不是一個cookie的內容。它是PHP $_SESSION的內容的序列化表示,它是通過在該數組上調用serialize生成的。

cookie本身只包含會話標識,它讓PHP知道哪些序列化會話數據爲unserialize,並將其作爲$_SESSION提供給您的腳本。

+0

所以'我'必須是數組索引呢? 'a:4:'是指什麼?它已經使用了兩次,然後開始一個大括號? –

+0

'a:4'意味着有4個元素的數組如下。 'i:0:s:18:「...」表示數組的第一個元素有一個整數鍵「0」,其值是一個長度爲18的字符串,其內容如下所示就是'serialize'是如何工作的。使用'var_dump'和'serialize'來查看值映射到序列化表示的方式。 – Jon

+0

這解釋了很多!但我仍然不明白第一行,我的PHP會話Id是無法接近第一行給出的字符串。中間一行中的這個特殊部分:'i:2; i:604800; i:3; a:4:' –

0

第一行是Yii設置的HMAC令牌。通過框架文件挖掘,發現他們設置令牌,並序列化cookie數據。