4月2日,twitter 官方博客称,mozilla firefox 储存缓存的方式可能导致用户的非公开信息储存在浏览器的缓存里,这意味着如果你用 mozilla firefox 在公用或共享计算机上访问 twitter,采取行动如下载存档或发送接收私信,那么你登出之后这些信息可能会仍然储存在浏览器的缓存里。
twitter 称这个私信缓存问题只影响 firefox 不影响 safari 或 chrome。那么这个问题是否应该怪罪于 firefox?mozilla 对此有不同看法,mozilla 官方博客在 4 月 3 日回应指出是 twitter 自己导致了这个问题。
mozilla 开发者指出,twitter 的 cache-control 指令设置不正确。rfc 7234 定义了缓存工作机制,其中的关键是 cache-control 头文件,网站使用 cache-control 告诉浏览器哪些内容可安全储存在缓存里。缓存内容可加快内容访问,因此除非网站明确指出不允许浏览器会缓存大部分内容,这个机制叫 heuristic caching(启发式缓存)。
firefox 的启发式缓存会缓存内容七天。twitter 没有给私信的缓存加入 no-store 指令。这个问题之所以没有在其它浏览器上重现是因为当 content-disposition 出现的情况下这些浏览器会禁用启发式缓存。而在 firefox 上,content-disposition 存在的情况下没有禁用启发式缓存。问题看起来是 twitter 没有在 firefox 上测试其网站的缓存行为。这其实是一种非常普遍的现象。
试用申请