1

我刚读了这篇文章,我几乎明白了,虽然还有一些我不太确定的地方……在这一Solution部分中,作者谈到了一个series of tokens.
他的意思是一个永远不会改变的用户名的唯一 ID 吗?存储在数据库中的普通用户 ID 是否适合此用途?那个“普通”用户ID很可能是用户知道的,所以我不确定这是否应该保持安全......
而且,什么是从大空间生成令牌的好方法' 如文章中推荐的那样?

4

3 回答 3

2

阅读文章:

登录 cookie 包含用户的用户名和一个随机数(从这里开始的“令牌”)

所以“一系列令牌”是“一系列随机生成的数字”。

于 2012-07-03T21:25:41.740 回答
2

令牌是包含随机字符和/或数字的字符串。a series of tokens是随机字符/数字的集合

更新:要在您的网站上创建安全的记住我功能,最好的方法是:

  • 将网站放在 SSL 后面,如果它降低了您的性能,请仅将敏感部分放在 SSL 后面。
  • 当用户点击“记住我”时,创建 2 个 COOKIES。1 个常规会话 cookie 和 1 个带有唯一字符串(令牌)的
  • 始终验证两个 cookie 是否可用,如果会话被劫持,黑客只有会话 cookie。
于 2012-07-03T21:27:19.827 回答
2

生成一系列标记的一种简单方法是迭代哈希:

T_0:用户名+哈希(用户名)
T_1:用户名+哈希(T_0)
T_2:用户名+哈希(T_1)
...

这种方法的缺点是被盗的 cookie 会泄露未来的访问权限。生成一系列令牌的更好方法是使用CTR风格的方法:

R = rand()
T_0: 用户名 + 哈希(R)
T_1: 用户名 + 哈希(R+1)
T_2: 用户名 + 哈希(R+2)
...

如果散列足够强(例如 SHA-256),并且随机数确实是从足够大的池中随机/dev/urandom选择的(从一个简单的来源中读取十几个字节......)那么任何一个 cookie 的知识都无法用于计算未来的 cookie - 即无需通过 Web 服务。

于 2012-07-03T21:30:43.923 回答