【问题标题】:How does Twitter.com logout users after cache clear?Twitter.com 缓存清除后如何注销用户?
【发布时间】:2011-10-22 00:33:36
【问题描述】:

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

我假设他们每秒左右通过 Javascript 轮询身份验证 cookie,如果 cookie 丢失,则退出用户。关于这是如何完成的还有其他猜测吗?

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

【问题讨论】:

    标签: security authentication cookies twitter


    【解决方案1】:

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

    我不太确定你在问什么关于“完成它的最佳方式”.. 完成什么的最佳方式?

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

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

    现在谈谈安全问题。通常,这些 cookie 的生命周期非常有限,即您的浏览器会话,因此当您关闭浏览器时,cookie 就会过期。如果站点启用了 ssl,则 cookie 的内容在通过网络传输时会被加密。如果没有,那么您就没有任何防御中间人或数据包捕获攻击的能力。 (查找火羊)。

    【讨论】:

    • 我想我的问题会变成检查 auth cookie 的最佳方法是什么?是否有推荐的做法,监控它的间隔等等......据我所知,这是一种非常罕见的行为。大多数网站不会在客户端主动监控 cookie,只关心新请求是否经过身份验证。
    • @Derek Hunziker:他们没有监控 cookie。 Twitter 通过 ajax 将请求发送回他们的服务器。根据定义,每个请求都会传递 cookie。如果 cookie 不存在,您必须重新登录。这里没有什么神奇的。
    • @Jeff Ferland:你是对的,不知道我在想什么。更新了答案。
    【解决方案2】:

    当您打开推特时,一些 JavaScript 代码会定期轮询服务器以获取新推文。发生的事情是您在轮询时间非常接近时清除了缓存,因此您的缓存清除似乎使您退出了,而实际上这只是预定的轮询。由于您清除了 cookie,因此当 twitter 去检查更多推文时,该请求没有您的登录 cookie,并且服务器将您注销。

    我刚刚对此进行了测试,当我清除我的 cookie 时,在 twitter 尝试获取更多推文之前没有任何反应。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-16
      • 1970-01-01
      • 2017-02-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多