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