我为某些应用程序开发了REST API,并使用了令牌身份验证。但是我想到了一个有关在数据库中存储令牌的问题:
- 使用一些安全的哈希函数(如bcrypt或sha3)存储它们,并在生成后仅向用户显示一次-因此,这些令牌不会向后可读,将来也不会显示给用户-影响客户的质量
- 以纯文本格式存储它们-如果数据库被破坏,则必须重新生成所有令牌-这同样会影响客户的质量
- 使用用户密码对其进行加密-由于数据库可能包含多个有权访问令牌的用户,因此无法进行加密。
我看到许多服务,例如Google,Github和Facebook,能够按需显示令牌,而无需任何特殊程序。它们是将它们存储为纯文本还是?