两个用户可以共享相同的浏览器和站点,但具有不同的会话

时间:2012-12-03 19:15:38

标签: php session

虽然可能不会经常发生,但可能会发生UserA已登录并具有活动会话。然后UserB拿起笔记本电脑,想要使用同一个网站。在PHP中,可以对此进行测试并允许它或每个会话一个用户。

我遇到的示例是在测试时我已经让userA登录到他们的个人资料,然后对于userB,我点击了一个链接来重置他们的密码,但是没有点击密码重置页面,我被重定向到userA的个人资料页面。这就是我对它进行编码的方式,但我想知道这些日子是否与家人在笔记本电脑上使用这些日子我应该设计一种方法来为每个人提供他们自己的会话,例如电子邮件链接?

编辑:我决定放弃这个想法。我会留给用户保护他们的会话。

2 个答案:

答案 0 :(得分:6)

我只是发布这个以显示它是如何可能的,但我强烈建议你从来没有尝试过使用这种技术。它打开了整个世界的安全问题,你可以为用户提供的任何轻微便利都将被它所造成的问题彻底消灭。

话虽如此,您可以使用PHP的trans_sid(“透明会话ID”)支持,其中会话ID自动嵌入到URL和隐藏表单字段中。这将允许您打开多个窗口,每个窗口都有自己的会话,窗口之间没有共享。

基本上你会关闭基于cookie的会话并仅使用透明ID:PHP会自动修改<a href="...">以将会话ID参数添加到查询字符串中,并根据需要插入隐藏的表单字段。它不适用于JS代码等,但您可以在那里添加ID。

然而,问题在于:现在会话ID已嵌入到URL和表单中,为您网站上的页面添加书签会将该书签与当时正在使用的特定会话联系起来。剪切粘贴网址以分享内容也会将用户的会话传输给他们发送链接的人。从您的站点单击任何指向外部世界的链接将传输会话ID作为引用者的一部分。例如你刚刚将会话劫持完全琐碎,因为用户每次做任何事情时都会从屋顶大喊大叫他们的会话ID。


更简单的解决方案:使用浏览器的“色情模式”,这样每个窗口都有自己的cookie存储空间,将每个用户的窗口/会话与其他窗口/会话分开。

答案 1 :(得分:0)

有可能使用chrome和firefox到目前为止我担心(我没有使用其他浏览器)。 这种功能被称为“多会话”。

在Chrome中,可以通过进入chrome:// chrome / settings /并将用户添加到chrome来激活它。

关于com:

  

您的服务器如何知道谁在使用笔记本电脑?通过传统的(合理的)平均值来实现它是不可能的

服务器只是问你一个id来获取你的会话。技术上,这个id存储在cookie中,因此它链接到物理机