stanleyxu 的秘密基地

 stay tuned ^^)

冤枉!浏览器缘何会丢失 Cookie

问题描述
最近一段时间用户总反应使用 GOSURF 的时候经常丢 cookie。问我是否内核里面做了一些错误的修改。我检查许久也没什么头绪,唯一觉得不同的就是,只在运行期加载 GOSURF 自己的用户标示
(User agent)。网上搜索一下关于丢 cookie 的文章,大部分都直指国内最红火的Discuz论坛。也看见该站技术人员解释道:因为 cookie 的有效期、作用域造成丢失,需要通过修改论坛设置就可解决。但是事实上,在我机器上各个Discuz论坛疯狂丢 cookie 的同时,那些国外的 vbbipb 论坛相安无事。所以我认为官方的说法有误,并进行了一番研究。

实际情况:
研究发现,
Discuz论坛程序在网站安全方面有这样的处理。如果 SecurityId 发生了变化,将删除原先的 cookie,并且提示用户重新登陆。而这个 sid是把用户标示联合其它变量计算而得。那么一旦用户标示发生了改变,sid 肯定也会随之改变,从而导致Discuz论坛错误的删除 cookie。如果你频繁切换使用 MSIE 和 GOSURF (包括其它外壳浏览器) 就容易出现这个问题了。(注:我仅检查了 Discuz v5.0 版的代码)

解决方案:
也有些临时的解决方案。比如使用固定或不主动添加用户标示的浏览器。还可以象
Firefox 一样,使用区别于 MSIE cookie 系统。但是要真正解决这个问题,还是希望 Discuz 论坛做出回应。Discuz 论坛无疑是国内最优秀的论坛程序之一,或许是出于安全性的考虑吧,但这样的设计未免欠妥。不知道是否他们还有其它的考量。外壳浏览器虽然不属于正规军,但是在市场的份额是必须得到承认的。因此,尽可能的兼容性各个浏览器,应该是产品设计时候需要周全考虑到的。


阅读更多
个人分类: 浏览器相关
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭