删除Cookies与Session Storage后仍保持登录的技术疑问
疑惑:部分网站清除站点数据后仍保持登录状态的原因?
我在Chromium浏览器中遇到了一个奇怪的现象,至少两个网站存在这种情况(暂未测试Firefox):
已登录状态下,通过DevTools点击「清除站点数据」,关闭所有该网站标签页后,没有像多数网站一样登出账号,仅弹出Cookie授权横幅,账号仍处于登录状态。
即便手动删除所有Cookie、Session Storage条目,甚至重启浏览器,登录状态依然保留。只有通过网站自身的登出功能,或者用Strg+H清除全部浏览器数据(仅移除客户端令牌,并非真正登出),才能退出登录。
可能的存储位置(除LocalStorage、Cookies、Session Storage外)
- IndexedDB:这是浏览器提供的大容量结构化存储机制,不少网站会用它存储持久化的用户登录数据(包括令牌)。DevTools的站点数据清理操作可能未完全覆盖IndexedDB,或者部分网站的IndexedDB数据未被关联到站点清理规则中。
- Web SQL:虽已被标准废弃,但仍有部分旧网站在使用,这种基于SQL的数据库存储可能保存登录相关信息,站点级的清理操作很容易遗漏它。
- Service Worker缓存:如果网站使用了Service Worker,它可能会缓存包含登录状态的资源或令牌。即使清除常规存储,Service Worker仍能从缓存中恢复登录状态,需要手动在DevTools的Application面板中注销Service Worker并清除其缓存。
- Shared Storage API:这是较新的浏览器跨站点数据共享API,部分网站可能用它存储用户登录状态,站点级的清除操作无法影响到这类存储。
- 第三方关联存储:若网站依赖第三方身份验证服务,第三方服务的Cookie或存储会维持登录状态,仅清理当前站点的数据无法触达这些第三方存储,导致网站仍能通过第三方验证保持登录。
内容的提问来源于stack exchange,提问作者TesterOlaf
相关产品推荐
相关产品推荐

