设想:
在多个用户同时使用的情况下,基于 cookie 的登录有时会被覆盖,导致一个用户看到其他用户的信息。
会话完全基于 cookie,对服务器的每个请求都通过 cookie 中的编码值向数据库进行身份验证,以获取有效用户和会话。
应用程序使用 Spring MVC 框架。应用程序运行良好,除了数百个用户同时访问网站。并发问题很少。一个用户的数据正在与另一个用户交换。
我们在重现该问题时遇到了麻烦。我们的测试资源有限,这些是我们应该遵循的工具/方法来复制问题。
设想:
在多个用户同时使用的情况下,基于 cookie 的登录有时会被覆盖,导致一个用户看到其他用户的信息。
会话完全基于 cookie,对服务器的每个请求都通过 cookie 中的编码值向数据库进行身份验证,以获取有效用户和会话。
应用程序使用 Spring MVC 框架。应用程序运行良好,除了数百个用户同时访问网站。并发问题很少。一个用户的数据正在与另一个用户交换。
我们在重现该问题时遇到了麻烦。我们的测试资源有限,这些是我们应该遵循的工具/方法来复制问题。
这种情况是针对安全漏洞的。
我在进行系统测试时已经重现了这种情况,但不太确定同样适用于您的情况。
希望以下步骤对您的情况有所帮助。
重现步骤:
使用一个浏览器上的用户 ID A 和另一个浏览器上的用户 ID B 登录系统。
对用户A在已有画面上做一些修改操作,不对用户B做任何操作。
保存/提交用户 A 最近编辑的数据。
不要注销现有用户的 (A) 会话。
检查后端数据库以获取针对用户 A 的最近修改的数据和时间戳。
此时,DB 应该必须按原样重置原始参数。
现在尝试为用户 B 进行任何数据修改。
检查后端数据库以获取针对用户 B 的最近修改的数据和时间戳。
DB 必须要求重置原始参数值
第二个的会话共享行为user B
不应该发生,第二个user B
应该具有与第一个不同的会话 id user A
。