【问题标题】:Multiple sessionIDs created for one user - how can this be?为一个用户创建了多个 sessionID - 这怎么可能?
【发布时间】:2013-02-04 19:56:37
【问题描述】:

我的一个(也是唯一一个)最终用户在退出时遇到了一些问题。我发现创建了多个 PHP SessionID,并且旧的 sessionID 超时导致注销。

问题在于多个会话 ID。我无法重现这是如何发生的。他们和我一样使用 Firefox。我尝试通过双击桌面图标打开新窗口,转到File -> Open New Window,然后右键单击应用程序中的链接并选择Open Link in New Window。我所做的一切都会打开一个具有相同 SessionID 的新窗口(在我的系统上)。这是预期的行为。

此用户是否可以通过其他方式打开可能创建单独 SessionID 的窗口?我无权访问他们的系统,只能从我的应用程序中记录数据。

【问题讨论】:

  • 他们可能禁用了 cookie,因此会阻止他们保持会话。
  • @John -- 只有一个用户会遇到这个问题。它不会发生在我身上。如果有空格,所有用户都会遇到问题。
  • 如果他们禁用了 cookie,就不会出现注销问题。他们会遇到登录问题。
  • 子域怎么样?也许 cookie 注册在不同的域下,但要阅读所有这些域。 (例如.domain.com。)您的网站是否允许子域?

标签: php session firefox


【解决方案1】:

他很可能使用的是不同的 firefox 浏览器。

您可以使用PHP mobile detect为您提供浏览器上的所有信息

我想这会证实我的猜测。

firefox 有多种变体,大多数情况下它们发送相同的标头,因此您不会知道它们是否使用 2 个不同的标头:

  1. firefox(原)
  2. Tor project
  3. Comodo Ice Dragon
  4. portable Firefox
  5. ...

我想不出同一个 Session_ID cookie 对同一个域具有相同值的方法。

也许一些不起眼的插件正在与浏览器调和。

修复: 尝试更改会话名称(php manual)

示例:

<?php

 session_name("My_new_session_id" );
 session_start();

通常要求将会话名称更改为不太明显的名称,例如:“qwerty”

编辑:

安全会话管理的简单示例:link

欲了解更多信息:OWasp Session Management Cheat Sheet

【讨论】:

  • 谢谢 - 最终用户在技术上还不成熟。我会确认这没有发生。
【解决方案2】:

回到这个问题。问题原来是其中一位用户的工作流程问题。通过教育解决了这个问题。

【讨论】:

    猜你喜欢
    • 2017-07-01
    • 1970-01-01
    • 2021-10-21
    • 1970-01-01
    • 2011-02-27
    • 2021-12-29
    • 2017-08-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多