【发布时间】:2018-09-24 16:17:44
【问题描述】:
使用 nodejs 和 crypto,现在,当用户登录时,我会生成一个随机的身份验证令牌:
var token = crypto.randomBytes(16).toString('hex');
我知道这不太可能,但是两个令牌具有相同价值的可能性很小。
这意味着理论上用户可以在另一个帐户上进行身份验证。
现在,我看到了两种明显的方法来通过这个:
- 当我生成令牌时,查询用户的数据库,看看是否有 已存在具有相同值的令牌。如果是这样,只需生成另一个。如您所见,这并不完美,因为我正在向数据库添加查询。
- 由于每个用户在我的数据库中都有一个唯一的用户名,我可以
使用用户名作为密钥生成器生成随机令牌。 这样,就不可能有两个令牌具有相同的值。加密能做到吗?安全吗?
你会怎么做?
【问题讨论】: