2011-07-26 80 views
3

爲什麼Codeigniter會這樣做?我的意思是,如果用戶可以看到他們的會話中存儲了哪些數據,那麼這不是非常不安全?而且,如果他們更改cookie中的值,會發生什麼?爲什麼codeigniter會將其sessiondata存儲在cookie中?

+0

[這](http://bleakview.orgfree.com/obsession/)是一種替代...和有更多的在那裏。 –

回答

5

那麼,這是關於用戶的數據。如果他們想改變它......那又怎麼樣?我不明白它是如何「不安全」的。

您可以可以加密會話數據或使用數據庫進行會話數據完整性驗證。

The documentation is your friend; use it.


對於它的價值,它確實似乎愚蠢的是原生的PHP會話不被使用。文檔聲稱這爲開發人員提供了「更多的靈活性」,但考慮到該頁面上列出的警告,我無法想象如何。

+1

例如,如果用戶具有管理員級別的會話。如果人們可以改變價值並且他們也會成爲管理員,這將是不安全的。 – user558117

+2

@ user558117:您永遠不會在會話數據中存儲認證權限。即使你這樣做,你當然也不會將會話數據作爲權威來源。 –

+0

'文檔聲稱這爲開發人員提供了「更多的靈活性」,但考慮到該頁面上列出的警告,我無法想象如何。「用戶數據存儲在客戶端的cookie中。這可以通過使用加密的cookie來改變。並非每個人都將私人數據存儲到會話中,因此無需默認加密。我猜這叫做靈活性功能。 – toopay

0

好吧,Codeigniter開箱即用的會話解釋與PHP會話不同。如果您希望通過$ _SESSION超級全球化,您仍然可以使用PHP會話,但Codeigniter基本上將會話視爲更方便的Cookie。雖然,您可以將會話存儲在數據庫中,這是我所做的,並且會阻止用戶更改會話值。

如果您想要半安全會話變量,請使用內置的PHP變量,如果您不想讓加密的數據庫中存在Codeigniter存儲會話值的麻煩。

一切詳細的文檔中解釋說:在曲奇http://codeigniter.com/user_guide/libraries/sessions.html

2

存儲會話是一種最糟糕的做法,每個瀏覽器都有大小限制的cookie和餅乾是讓每一次你的要求送東西,雖然它是簡單的ajax請求,這種做法只會讓你的請求變慢,我認爲在爲Codeigniter開發會話庫的時候,他們可能會想到,用戶只會在會話中存儲少量數據,但它只是將一個會話存儲在Cookie中

相關問題