有效地将给定令牌与数据库中的散列,盐渍令牌进行比较

问题描述 投票:1回答:1

我正在使用令牌在我的应用程序中实现身份验证。

生成令牌时,实际令牌将发送到客户端以存储在cookie中,而散列令牌将与散列期间使用的salt一起保存在数据库中。

现在,为了验证用户,我必须将给定的令牌与数据库中保存的令牌进行比较,这似乎需要检查数据库中的每个条目,因为salt对于每个令牌都是唯一的。

重申一下,我必须做以下事情:

for saved_token in all_saved_tokens:
   hashed_token = hash_token_with_salt(actual_hash_from_client, saved_token.salt)
   if hashed_token == saved_token.hashed_token:
       return saved_token.user

由于这需要在每次通话时发生,因此看起来非常低效。

所以问题是:

鉴于我存储有关令牌的信息,我可以以某种方式更有效地做到这一点吗?

我当然可以将用户的用户名存储在cookie中并将其与密码一起传递给密码,以便我可以缩小数据库中的搜索范围,但理想情况下我更愿意只使用令牌来保持整洁和整洁。 。

security authentication cookies hash access-token
1个回答
0
投票

为什么不将散列标记保存到db并在散列标记上添加索引,这样就不需要迭代了

© www.soinside.com 2019 - 2024. All rights reserved.