所以我研究了一下,发现“一次性密码”这个词通常是指时间同步的硬件时钟。
我们没有那个。我们正在创建一个工作流程,员工可以在其中注册客户,然后客户会收到一封包含登录链接的电子邮件,该链接仅有效一次(客户必须提供一些额外的、弱的和简单的个人信息,例如电话号码才能登录)
所以严格来说,这不是 OTP,但可能更像是一次性令牌。
这种情况有什么好的策略?我的主要不确定性是我是否需要在 DB 中加密这个令牌到目前为止我已经确定:
- 使用 生成一次性令牌
uuid.uuid4()
。这非常简单易行。但是,没有加密。 - 生成一次性令牌并将其加密保存到数据库,然后将其编码为 HTML 安全并与链接一起发送。
我想知道是否需要加密令牌。通常我们当然需要在数据库中加密密码。但是这个令牌无论如何都会通过HTTP发送(我猜是base64编码)所以我看不到加密它的优势......