为什么我在A地登录某网站,别人在B地打开该网站,上面显示的是我的账号登录着?


如题:为什么我在一个地方(比如北京)用一个账号登录后,其他人在另一个地方(比如山西)登录该网站后,直接显示我的账号登录着?

比如,我在北京登录了segmentfault,其他人在山西打开segmentfault官网,看到网站就已经处于登录状态了,显示的就是我的账号,或许是我还未点击退出按钮或许是直接关闭浏览器,又或者其他。

目前怀疑登录时勾选了自动登录或者未通过点击退出按钮造成的,但现在还没测试出问题所在。望遇到过此类问题的童鞋给出思路或解决方向。

php 自动登录

Socks 10 years, 5 months ago

这个问题不关cookie什么事啊。很明显SessionId串号了。

题主的情况是:当你打开这个网站的时候,服务器给你发了一个随机的一段数字,作为你的身份证,比如:
123456789,因为给每个人发的号码都是随机的,所以可以认为是唯一的,但是并不是绝对的,可能网站程序采用的随机算法有问题,导致生成的随机数相同了,也就是把123456789这个数字又给了另一个人,然后就认为你们两个是同一个人了。。。。。
听新闻说渣浪微博出现过这个情况哈,应该是用户太多导致冲突几率变大了吧。。。
要验证是不是这种情况,可以用查看cookie的工具,在两边都看下是不是重复的。

另:所谓session劫持,就是这么个原理:恶意用户通过某种手段,如xss等,获取到用户cookie中的sessionId,拥有此id,对于程序来讲就代表你是这个用户,然后黑客就可以行使此用户的所有权限。
所以sessionId放在cookie中时,请记着设置为httponly,并加密传输。

再补充:楼上说的缓存也是有可能的,可能某些战五渣类的CDN或者ISP把你的请求结果缓存了吧,但是这种情况几率应该不高,那样的话就不止一个人受影响了,通过此CDN或ISP的用户都会受到影响的。

翅膀默默飞啊飞 answered 10 years, 5 months ago

Your Answer