我生成 oauth2 访问和刷新令牌并将它们存储在我的数据库中。我使用 UUID v4 生成这些令牌并删除破折号。我曾经在令牌过期后删除它们,但现在我将它们全部存储起来,因为我想到了可能发生的事情。
如果攻击者在本地存储了为他生成的所有访问令牌,并且他不断地一次又一次地使用这些访问令牌进行授权,该怎么办。由于我作为数据库管理员正在删除生成的令牌,因此数据库无法知道令牌是唯一的。因此,如果 UUIDv4 算法为不同的用户生成访问令牌并且这是一个冲突(与之前生成的 UUID 相同)并且攻击者发现了该冲突,他可以进入服务,因为他拥有之前生成的令牌。
我的问题是我应该担心这一点并保留我的所有令牌以防发生冲突以检查唯一性,还是应该在它们过期后删除访问和刷新令牌并相信 UUIDv4 有足够的熵来防止这种情况发生?
我还担心,如果我保留所有令牌,它将使数据库膨胀,因为访问令牌每小时到期一次,并且在用户下次采取行动时重新生成。
任何帮助表示赞赏!