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