php - 有没有办法检测会话是否被多人访问?
问题描述
鉴于会话固定/劫持的情况,如何检测同一个会话是否被多方同时访问?
我宁愿不使用$_SERVER['REMOTE_ADDR']
.
解决方案
简短的回答是,你不能,因为 HTTP 协议是无状态协议,这意味着服务器在请求完成后对用户一无所知。
但是您可以尝试一些技巧来使从未经授权的用户那里欺骗会话变得更加困难,服务器端的常用技术是在会话变量上存储 $_SERVER['HTTP_USER_AGENT'] 的哈希值并将其与您的值进行比较获取每个请求,如果信息更改,则终止会话。
不要使用 $_SERVER['REMOTE_ADDR'] 或其他方式来猜测客户端 IP,因为它会破坏移动用户的会话,因为他们的 IP 总是在变化。
推荐阅读
- c++ - 构造函数中的变量未在此范围内声明 c++
- r - R - 当数据有变量时导出到 xlsx 是一个列表
- kubernetes - 如何在 Kubernetes 中对不受信任的代码进行沙箱处理
- flutter - 有没有办法替换字符串中的多个关键字并用自己的关键字包装它们?
- android - 颤振构建失败
- node.js - Imgur上传api错误总是用multer和form-data nodejs返回400
- types - 如何在 Rust 中通过 `T`、`&T` 和 `&mut` T 获得相同的 `std::any::TypeId::of` 结果?
- c# - File.CreateText 在某些环境中编码为 UTF-8,但在其他环境中编码为 UTF-8 和 BOM
- java - 你能解释一下这个解决方案有什么区别吗
- html - 显示嵌套下拉菜单,溢出隐藏设置为父下拉菜单