用于"记住我"饼干的哈希或代币?

Ema*_*sev 10 security authentication

记住我的 cookie时,有两种截然不同的方法:

哈希
记得我的cookie存储能够识别用户(即用户ID)和一个字符串,可以证明被识别的用户是它伪装成一个字符串-通常是基于哈希的用户密码.

令牌
记得我的cookie存储随机(无意义的),这与在一个记录对应但唯一的字符串标记表,用于存储用户ID.

哪种方法更安全,有什么缺点?

Udo*_*Udo 9

如果可能,您应该使用随机生成的标记.当然,缺点是你必须编写一些额外的代码来存储和使用它们在服务器端,所以这可能不适用于所有的Web应用程序.但从安全角度来看,这具有明显的优势:

  1. 攻击者无法从用户ID生成令牌,但他肯定会生成哈希值.这是一个很大的问题,即使你在生成哈希时使用盐(你应该),如果盐落入坏人之手,你的用户也会被搞砸.

  2. 提供这些令牌可以让您的用户(或者您的管理员,如果需要)"注销"他们可能想要摆脱的某些会话.这实际上是一个很酷的功能,谷歌和Facebook使用它.

所以,如果你有时间和预算:令牌,绝对.