2012-05-09 29 views
1

CodeIgniter設置爲存儲在數據庫中的會話,但它仍然在Cookie中堅持以下福利:爲什麼CodeIgniter在它的cookie中存儲了太多的數據?

a:4:{ 
s:10:"session_id";s:32:"191668b039f27f1a4fa25586aaaf708e"; 
s:10:"ip_address";s:14:"123.12.123.123"; 
s:10:"user_agent";s:50:"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko"; 
s:13:"last_activity";i:1336549698; 
}9fed5a2005d9df3ccedff9589aa7d36f 

所有這一切也是在default_ci_sessions,所以我不知道爲什麼它也要去餅乾!我在問,因爲有關用戶可識別數據的本地存儲的新的歐盟cookie法規。我不完全確定這是屬於立法的範疇,但人們對此表示關注。

+0

你擔心太多。幾乎世界上每個地點都這樣做。 – OptimusCrime

+0

這與PyroCMS無關,它是CI如何做的事情。請修改你和我的問題,@narfbg將與其他CodeIgniter開發者討論這個問題。 –

回答

1

這來自CodeIgniter會話庫的邏輯(因爲PyroCMS是用CI構建的)。我目前無法告訴你爲什麼這樣做,但我也沒有看到需要將這些數據單獨存儲在cookie本身中。我將就此進行討論,我將在此發佈鏈接以跟蹤。

編輯:https://github.com/EllisLab/CodeIgniter/issues/1344

1

我敢肯定,這是與CI會話類,並可以設置優先做。

當腳本檢查cookie的有效性時,無論您是使用DB會話還是不使用(在sess_read()中),它都可以根據來自Input類的當前用戶代理數據檢查IP地址和UA字符串)來驗證cookie。如果您使用的是數據庫,它還會根據Cookie數據檢查數據庫數據。

腳本會這樣做以防止黑客攻擊 - 理論上某人可能會猜測或嗅探正確的session_id,IP地址或UA字符串,但所有這三者都會更困難。

更多這裏http://codeigniter.com/user_guide/libraries/sessions.html

+0

這並不能解釋爲什麼它存儲在本地機器上,它可以全部在服務器上完成,並簡單地將會話ID存儲在cookie中,就像本地php會話一樣 – Matthew

+0

是的,它的確如此 - 該腳本將該cookie與UA詳細信息和數據庫。 –

+0

雖然我沒有看到存儲在會話中的UA細節(等)之間的區別。 – Matthew

相關問題