安全漏洞问题

时间:2015-08-13 13:21:44

标签: php session

客户希望添加允许一个用户一次只登录一个位置的功能。例如,如果我以maria.nausal@gmail.com身份登录,那么软件不允许我在不同浏览器或不同系统的同一系统中使用相同的电子邮件帐户登录。

我通过更新用户状态来处理这个功能,但是当用户关闭浏览器按钮而没有注销时它不起作用。

然后我使用onbeforeunload事件来处理这类问题。在桌面设备上一切正常,但此事件在移动设备中不起作用。通过使用Onbeforeunload,

如果您有其他解决方案适用于所有环境,请建议我。解决方案应该是session,因为onbeforeunload也会产生问题。

三江源

3 个答案:

答案 0 :(得分:0)

您的第二种方法也不适用于网络连接失败或断电或用户只是关闭笔记本电脑盖。整个方法是不稳定的,因为它与无状态的底层Web技术相冲突。无法清楚地确定会话是否仍在使用,因为存在永久连接但只有单个请求。

您可以获得的最接近的是在一段时间不活动后超时。为了不破坏用户体验,您应该注意在后台无缝重建/重新激活会话,而无需任何用户交互。

答案 1 :(得分:0)

我认为没有一种万无一失的方法来做你想做的事情。其他网站(例如银行网站)所做的是跟踪您上次活动的时间。然后在最后一次活动后的一段时间内,他们会在服务器端自动登出。

答案 2 :(得分:0)

在数据库中添加一个字段,用于唯一标识浏览器,计算机等(例如IP地址)并在用户登录时记录。然后在用户每次导航到新页面时检查它是否相同。因此,如果用户登录到计算机A,然后登录到计算机B,则下次他们导航到计算机A上的新页面时,它会看到计算机B是最后一个登录并注销计算机A.

相关问题