在缓存清除后,Twitter.com如何注销用户?

时间:2011-10-22 00:33:37

标签: security authentication cookies twitter

今天下午我注意到一些非常有趣的事情 - 当我清除浏览器缓存和cookie时,Twitter会立即告诉我。

我假设他们每隔一秒左右通过Javascript轮询一次身份验证cookie,如果cookie丢失则退出用户。关于如何做到的任何其他猜测?

由于这是我第一次遇到这种行为,我想知道它有多常见,实现它的最佳方法,以及实现它时应该有的任何安全问题(如果有的话)。

2 个答案:

答案 0 :(得分:3)

任何网站都知道您已登录的唯一方法是通过您的浏览器在后续请求中发送的cookie。如果cookie不再存在,那么根据定义,您将不再登录其网站。

我不确定你对“完成它的最佳方法”的要求是什么。最好的方法来完成什么?

如果您询问保持浏览器通过cookie登录的最佳方法是什么,那么归结为在cookie中存储会话或用户ID。会话ID是首选,因为它是每个“会话”的不同值。

关于使用cookie实现安全性的常见方式是:它们几乎无处不在。 Cookie不会用于存储会话ID的唯一情况是会话ID是否出现在查询字符串中。

现在出现安全问题。通常这些cookie的生命周期非常有限,这与您的浏览器会话有关,因此当您关闭浏览器时,cookie将过期。如果站点启用了ssl,那么cookie的内容在通过线路时会被加密。如果没有,那么,你没有任何防御中间人或数据包捕获攻击。 (查看firesheep)。

答案 1 :(得分:3)

当你打开twitter时,一些javascript代码会定期轮询服务器以获取新推文。发生了什么事情是你在非常接近轮询时间的情况下清除了你的缓存,所以看起来你的缓存清除记录了你,而实际上它只是一个预定的民意调查。由于您清除了Cookie,当Twitter检查更多推文时,该请求没有您的登录cookie,服务器已将您注销。

我刚试过这个,当我清除我的cookie时,没有任何事情发生,直到twitter试图获得更多的推文。