通过UUID生成密码重置令牌

时间:2015-07-06 11:10:19

标签: java base64 uuid

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

我在这方面做了很多事,但看起来这件事并不明显。

我尝试过这样的事情:

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

但在阅读了以下文章之后:Is UUID.randomUUID() suitable for use as a one-time password?看起来这种方式并不完全正确。

如果您回答以下问题,我们将非常感激:

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

1 个答案:

答案 0 :(得分:5)

  1. 使用UUID是安全可靠的。链接的文章只是说UUID对于这种安全性来说可能有点太多了。但是......如果你是#34;那么"安全,没有人会责怪你。

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

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

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