我有點困惑。我一直在用我自己的會話系統構建我的網站,但我不確定PHP自己的會話系統有多安全。我的會話系統通常只有用戶名和相當苛刻的散列,它不包含用於生成的用戶名或密碼。我將散列保存在用戶數據庫中,並作爲cookie來確認每次頁面加載時的用戶會話。所以我的問題是我可以相信PHP會話還是繼續使用我自己的?PHP用戶會話
PHP用戶會話
回答
PHP將一個唯一的會話ID保存在一個cookie中,並將所有與會話相關的值存儲在服務器自己的文本文件中。您必須獲取會話ID才能竊取會話,這意味着您必須從受害者的計算機上竊取會話Cookie。 PHP自己的系統至少和你自己建立的系統一樣安全
不同之處可能在於通過暴力來找到活動會話有多困難。這完全取決於哈希算法和隨機數生成器。
你可以使用不同的散列算法,或者你可以使用你的own algorithm to create the session ids用於PHP的會話系統,如果你不相信PHP做到這一點。
將數據存儲在cookie中與使用PHP的會話相比是非常不同的。 Cookies在客戶端存儲數據;會話存儲數據的服務器端,它具有許多優點:
- 用戶無法看到它
- 用戶不能修改
- 的瀏覽器並不需要發送的數據向服務器發送每個請求
通常PHP會話確實將會話密鑰存儲爲cookie(儘管他們不需要),但您實際關心的數據都不會發送給用戶,而是存儲在服務器上並使用會話密鑰查找
現在我想知道如果會話密鑰沒有存儲爲cookie,服務器如何注意到用戶是誰? 與我的系統基本上,如果用戶將修改會話cookie,他會剛剛註銷。用戶實際上無法知道我是如何生成會話密鑰的,因此如果他看到它並不重要。我的系統還將會話密鑰存儲在服務器中以確認cookie。 – TMKCodes 2010-06-12 18:47:34
@Temek好吧,客戶必須以某種方式告訴服務器會話密鑰,它不需要存儲在cookie中;另一個主要方式是作爲[GET參數](http://us2.php.net/manual/en/session.idpassing.php) – 2010-06-12 18:58:37
啊耶。愚蠢的我。我以爲你在說客戶端根本不需要有會話數據。 :)抱歉混淆。 – TMKCodes 2010-06-12 19:03:22
我不知道如何確保PHP自己的會議系統是
和世界其他地區是不知道你的安全性如何。很多人已經看過PHP中的會話處理器,並沒有發現任何實施中的缺陷。它也很好地表徵和集成,但支持用戶定義的處理程序的概念。
我建議使用標準會話代碼 - 但您可能想編寫自己的處理函數。
C.
- 1. Php用戶登錄會話
- 2. PHP用戶會話菜單
- 3. 限制會話用戶PHP
- 4. PHP會話。管理員如何銷燬用戶的會話
- 5. PHP會話 - 每個用戶多個會話 - 如何同步?
- 6. 列出用戶的Php會話並遠程登錄該會話
- 7. 打印php會話用戶名
- 8. PHP獲取會話用戶名
- 9. PHP:用戶登錄會話和cookies
- 10. 不能回顯會話用戶php
- 11. PHP用戶會話獲取'Muddled'
- 12. PHP會話與不同用戶共享
- 13. php用戶級會話持久性
- 14. php在會話中存儲用戶ID?
- 15. 跨用戶的PHP會話範圍
- 16. php會話用戶名/密碼
- 17. 與php會話混淆用戶?
- 18. 在會話PHP中存儲用戶名?
- 19. 會話未與用戶名關聯PHP
- 20. 活動用戶跟蹤,PHP會話
- 21. PHP安全會話和用戶登錄
- 22. PHP每用戶多個併發會話
- 23. PHP客艙與現有用戶會話
- 24. 創建會話用戶登錄php
- 25. PHP會話的用戶被登出
- 26. PHP多用戶登錄會話
- 27. 用戶可以修改PHP會話嗎?
- 28. 用戶和用戶會話
- 29. 會話用戶名
- 30. 由用戶會話
爲了澄清,您是使用'$ _SESSION'來存儲數據,還是使用您自己的Cookie? – TheDeadMedic 2010-06-12 18:25:56
我自己的餅乾。 – TMKCodes 2010-06-12 18:30:45
所以你問的是你的認證系統。 – Gumbo 2010-06-12 18:41:32