两个不同web浏览器之间的共享会话


Sharing session between two different web browser

我想制作一个PHP web应用程序,在该应用程序中,在一台PC上一次只能有一个身份验证会话,即用户a使用Firefox登录,但用户B不能在同一台PC 上使用IE

关于我在谷歌上搜索到的内容,如果服务器端要求,浏览器之间的会话共享无法完成

理论上,您可以使用session_id()和数据库条目来实现这一点,尽管安全性会很棘手,因为恶意用户可能会尝试生成随机会话id来模拟登录用户的会话。

会话信息存储在客户端浏览器的cookie中,并带有指定的ID。通过存储该ID和数据的JSON字符串,无论何时更新,各个用户都可以共享相同的数据。他们都必须偶尔对服务器进行一次轮询,看看数据是否发生了更改。

但在这一点上,你不需要再使用$_SESSION了,所以它几乎违背了你问题的目的。您可以使用正则变量获得相同的行为,这已经是一个安全性改进。


简短回答:不,这不是会议的重点。

您可以制作登录脚本,以便在登录时检查用户是否已经被抢注。如果登录,它将拒绝任何进一步的登录。

如上所述,PHP可以将会话ID存储在数据库中。请检查数据库是否存在,然后在此基础上允许或禁止。

您可以通过使用识别设备的签名算法来完成这项任务(假设您与普通用户合作,他们不会试图欺骗用户代理和其他技巧)。你的算法可以有你认为合适的变量。

例如REMOTE_ADDR、USER_AGENT。其他特殊变量可以通过在客户端执行基于flash的代码来获得。当每个请求到来时,您可以将其与经过身份验证的现有密钥进行比较,如果您获得了一个新会话,其中除Browser String之外的所有变量都匹配,则可以安全地假设它是使用不同浏览器的同一用户。

您必须使用flash组件收集额外的变量,这样才能工作。通过$_SERVER可用的变量是不够的。因为代理背后可能有用户,你不想把他们认定为假阳性。