我有点困惑。我一直在用我自己的会话系统构建我的网站,但我不确定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用户会话获取'Muddled'
- 7. 用户可以修改PHP会话吗?
- 8. PHP安全会话和用户登录
- 9. 会话未与用户名关联PHP
- 10. php在会话中存储用户ID?
- 11. PHP:用户登录会话和cookies
- 12. PHP多用户登录会话
- 13. PHP会话的用户被登出
- 14. PHP每用户多个并发会话
- 15. 跨用户的PHP会话范围
- 16. php用户级会话持久性
- 17. 打印php会话用户名
- 18. 活动用户跟踪,PHP会话
- 19. PHP会话与不同用户共享
- 20. 用户和用户会话
- 21. 会话用户名
- 22. 由用户会话
- 23. django会话用户
- 24. ember.js - 用户会话
- 25. Symfony会话到php会话
- 26. CodeIgniter会话vs PHP会话
- 27. 使用PHP会话登录到随机用户帐户的人
- 28. PHP会话(用户/管理员)的用户级别
- 29. 登录后会话输出用户名和用户类型PHP
- 30. 两个客户的PHP会话重叠
为了澄清,您是使用'$ _SESSION'来存储数据,还是使用您自己的Cookie? – TheDeadMedic 2010-06-12 18:25:56
我自己的饼干。 – TMKCodes 2010-06-12 18:30:45
所以你问的是你的认证系统。 – Gumbo 2010-06-12 18:41:32