首页 > 解决方案 > 有没有办法检测会话是否被多人访问?

问题描述

鉴于会话固定/劫持的情况,如何检测同一个会话是否被多方同时访问?

我宁愿不使用$_SERVER['REMOTE_ADDR'].

标签: phpsecuritysession

解决方案


简短的回答是,你不能,因为 HTTP 协议是无状态协议,这意味着服务器在请求完成后对用户一无所知。

但是您可以尝试一些技巧来使从未经授权的用户那里欺骗会话变得更加困难,服务器端的常用技术是在会话变量上存储 $_SERVER['HTTP_USER_AGENT'] 的哈希值并将其与您的值进行比较获取每个请求,如果信息更改,则终止会话。

不要使用 $_SERVER['REMOTE_ADDR'] 或其他方式来猜测客户端 IP,因为它会破坏移动用户的会话,因为他们的 IP 总是在变化。


推荐阅读