PHP用户会话
我有点困惑。我一直在用我自己的会话系统构建我的网站,但我不确定PHP自己的会话系统有多安全。我的会话系统通常只有用户名和相当苛刻的散列,它不包含用于生成的用户名或密码。我将散列保存在用户数据库中,并作为cookie来确认每次页面加载时的用户会话。所以我的问题是我可以相信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.
为了澄清,您是使用'$ _SESSION'来存储数据,还是使用您自己的Cookie? – TheDeadMedic 2010-06-12 18:25:56
我自己的饼干。 – TMKCodes 2010-06-12 18:30:45
所以你问的是你的认证系统。 – Gumbo 2010-06-12 18:41:32