【问题标题】:Generate password reset token through UUID通过 UUID 生成密码重置令牌
【发布时间】:2015-09-23 12:15:57
【问题描述】:

我正在寻找生成随机唯一字母数字密钥以重置用户密码的机制。

我在这个方向上看了很多,但看起来这件事并不明显。

我尝试过类似的方法:

new String(encodeBase64URLSafe(UUID.randomUUID()));

但是看了下面的文章:Is UUID.randomUUID() suitable for use as a one-time password? 看来这种方式并不完全正确。

如果您回答以下问题,将不胜感激:

  1. 使用 UUID 生成此类令牌的安全方法是什么?
  2. 我们是否需要将 UUID 字符串转换为 base64 以获得安全的 URL,或者从生成的字符串中删除破折号就足够了?
  3. 在这种目的How to generate a random alpha-numeric string? 中使用此链接中的机制是否正确,为什么?

【问题讨论】:

    标签: java base64 uuid


    【解决方案1】:
    1. 使用 UUID 是安全可靠的。链接的文章只是说 UUID 对于这种安全性来说可能有点太多了。但是好吧......如果你“太”安全了,没有人会责怪你。

    2. UUID 只是字母数字字符和破折号。因此,如果您需要将其放入查询字符串或 URL 中,则无需转义。如果需要,您可以删除破折号以节省一些空间。但这不是必需的。

    3. 这种机制也很安全。两者(UUID 和这个)都可以。

    对于这种安全性,您所要做的就是确保您的令牌是随机生成的(甚至是部分生成的)。

    【讨论】:

    • 谢谢 Magus,这正是我想要的!
    猜你喜欢
    • 1970-01-01
    • 2012-09-16
    • 2017-02-03
    • 2018-09-30
    • 2013-11-29
    • 1970-01-01
    • 2018-06-01
    • 1970-01-01
    相关资源
    最近更新 更多