2011-10-22 71 views
2

今天下午我注意到了一些非常有趣的事情 - 当我清除我的浏览器缓存和Cookie时,Twitter立即让我出去。Twitter.com如何在注销缓存后注销用户?

我假设他们每隔一秒左右通过Javascript轮询一次认证cookie,并在缺少cookie的情况下注销用户。任何其他猜测如何做到这一点?因为这是我第一次遇到这种行为,所以我想知道它是多么普通,实现它的最佳方式,以及实现它时应该具有的任何安全问题(如果有的话)。

回答

3

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

我不完全确定你在问什么“最好的方法来完成它”。最好的方法来完成什么?

如果你问什么是最好的方式来完成保持浏览器登录通过cookie,然后归结为存储会话或用户ID在cookie中。会话ID更受欢迎,因为它是每个“会话”的不同值。

关于在安全方面使用cookie有多常见:它们几乎无处不在。唯一的时间cookie不用于存储会话ID是否会话ID出现在查询字符串中。

现在出于安全考虑。通常这些cookie的使用寿命非常有限,即对于浏览器会话,因此当您关闭浏览器时,cookie会过期。如果网站启用了SSL,那么Cookie的内容在通过网络时被加密。如果没有,那么对于中间人或数据包捕获攻击,你没有任何防御措施。 (查看firesheep)。

+0

我想我的问题,然后成为什么是检查auth cookie的最佳方法?是否有建议的做法,监测它的时间间隔等等......据我所知,这是非常罕见的行为。大多数网站不会主动在客户端监控cookie,只关心新请求是否经过验证。 –

+0

@Derek Hunziker:他们没有监控cookie。 Twitter通过ajax将请求发送回其服务器。根据定义,每个请求都会传递cookie。如果cookie不存在,您必须重新登录。这里没什么神奇的。 – NotMe

+0

@Jeff Ferland:你是对的,不知道我在想什么。更新了答案。 – NotMe

3

当您打开twitter时,一些javascript代码会定期轮询服务器以获取新的推文。发生了什么事,你清除缓存的时间非常接近于轮询时间,所以看起来你的缓存清除功能已将你注销,实际上它只是一个预定的民意调查。既然你清除了你的cookies,当twitter去检查更多的推文时,这个请求没有你的登录cookie和服务器登出你。

我刚刚测试过这个,当我清除我的cookies时,没有任何反应,直到twitter试图获得更多的推文。