添加系列标识符如何帮助实现持久登录?

How does the addition of a series identifier help in this persistent login implementation?

原始"remember me"登录实现: http://fishbowl.pastiche.org/2004/01/19/persistent_login_cookie_best_practice/

补充: http://jaspan.com/improved_persistent_login_cookie_best_practice

Millers 最初实现的 "Remember me" 持久登录功能对我来说很容易理解 - 没有问题。

但令我困惑的是,在改进版本中添加额外的 "series identifier" 有何帮助 - 因为如果 "remember me" cookie 被盗,那么攻击者只需将该 cookie 提供给网站并可以使用它,直到原始用户尝试使用他自己的 cookie - 此时,由于凭据不匹配,详细信息将从数据库中删除,用户和攻击者是 "logged out".

直到原始用户尝试使用他的 cookie - 攻击者不能简单地使用窃取的凭据吗?

如果我理解得很好,根据 Jaspan 的说法,Miller 实施的问题是受害者不知道她的 cookie stolen.The目标是向用户显示一条消息,说他是会话劫持的受害者.

由于攻击者在使用窃取的 cookie 后会收到一个带有新随机令牌的新 cookie,因此您必须检测是否有人在使用旧 cookie 进行身份验证,以检测潜在的会话劫持。

因此 Jaspan 建议,不要跟踪所有旧的 cookie,而是(永久地)link 一个长的、随机的和不可预测的用户 ID,该 ID 将被添加到 cookie 中。

最后,您无需检测旧的有效 cookie,只需查看 cookie 中存在的用户名和 ID 是否匹配,然后检查令牌。如果令牌不匹配,因为用户名与 ID 匹配,您可以推断出 cookie 曾经有效并且可能存在会话劫持(或合法用户使用不同的设备:))

此解决方案无法阻止通过窃取 cookie 进行的会话劫持,但允许在登录时警告用户此会话可能已被劫持。