PHP安全会话由唯一标识符

时间:2011-03-30 18:20:34

标签: php session

新会话,只是想知道是否有可能在我们的情况下(在我们的例子中)两个预订同时处理会话变量会混淆。

例如,如果用户1进行预订,则该信息会在他登录时保持在会话中。同时另一个用户进行预订,他们已经登录。他们是否有可能混淆会话。

如果答案是肯定的,那么解决方案是将一个唯一的临时名称作为会话名称的一部分,有点像文件上传中的TMP名称。

如果是的话,怎么做。

非常感谢,

4 个答案:

答案 0 :(得分:3)

我相信UID(php指定的会话ID)是在服务器时间之外随机生成的,所以答案是否定的。不会给两个人分配相同的UID。

答案 1 :(得分:0)

我不知道会话会如何混淆。服务器为该用户的会话生成唯一的会话ID。在每个页面请求中,用户的浏览器将会话ID发送到服务器,服务器验证它是否是有效的会话。

只要会话ID是唯一的并且用户没有发现其他用户的会话ID,就没有混乱的原因。

答案 2 :(得分:0)

会话ID基本上只是随机数。 HIGHLY 不太可能,但两个或更多用户不可能获得相同的会话ID。

PHP确实(我相信)检查当前是否有另一个会话正在使用它刚刚生成的ID。如果发生碰撞,它只会产生另一个碰撞,并继续尝试直到出现“独特”的东西。但是,这并不妨碍以下情况:

  1. 用户A获取会话ID“X”
  2. 用户A离开一段时间,会话'X'过期
  3. 用户B出现,服务器通过随机机会再次生成会话ID“X”
  4. 用户A返回原始会话X cookie ID并获取用户B的会话。
  5. 同样,考虑到会话ID空间的大小,这种情况发生的可能性非常小。但同样,这并非不可能。

    除此之外,有些情况下,破坏/配置错误的代理服务器会混淆cookie并基本上“交叉连接”,以便会话ID在不同用户之间混淆。我记得一个移动运营商的网关就是这样做的情况,某个型号的智能手机上的人正在接收其他人的会话而不是他们所在的会议。

答案 3 :(得分:0)

只是为了扩展Marc的答案。

他所谈论的可能性非常类似于被太空陨石杀死的可能性。

因此,实际上答案是。你可以像其他人一样依赖大数字