当前位置: 首页 > 面试题库 >

生成随机令牌以忘记密码的最佳实践

萧煜
2023-03-14
问题内容

我想生成忘记密码的标识符。我读到我可以通过在mt_rand()中使用时间戳来做到这一点,但有人说时间戳记可能并非每次都是唯一的。所以我有点困惑。我可以在此使用时间戳吗?

问题
生成自定义长度的随机/唯一令牌的最佳实践是什么?

我知道这里有很多问题,但是在听取了不同人的不同意见后,我变得更加困惑。


问题答案:

在PHP中,使用random_bytes()。原因:您正在寻找一种获取密码提醒令牌的方法,并且,如果它是一次性登录凭据,则实际上您有一个数据需要保护(即-整个用户帐户)

因此,代码将如下所示:

//$length = 78 etc
$token = bin2hex(random_bytes($length));

更新此答案的 _先前版本
所指,uniqid()如果存在安全问题,而不仅仅是唯一性,那是不正确的。uniqid()本质上只是microtime()一些编码。有一些简单的方法可以microtime()对您的服务器进行准确的预测。攻击者可以发出密码重置请求,然后尝试几个可能的令牌。如果使用more_entropy,这也是可能的,因为附加熵同样很弱。



 类似资料:
  • 本文向大家介绍php实现随机生成易于记忆的密码,包括了php实现随机生成易于记忆的密码的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php实现随机生成易于记忆的密码。分享给大家供大家参考。具体实现方法如下: 这里通过预定义一些单词,让php随机从这些单词中选择进行组合生成密码 希望本文所述对大家的php程序设计有所帮助。

  • 本文向大家介绍Python生成随机密码,包括了Python生成随机密码的使用技巧和注意事项,需要的朋友参考一下 本人  python新手,使用的环境是python2.7,勿喷 以上就是本文的全部内容了,希望对大家学习python能够有所帮助。

  • 本文向大家介绍Python3实现生成随机密码的方法,包括了Python3实现生成随机密码的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python3实现生成随机密码的方法,在Python程序设计中有着广泛的实用价值。具体方法如下: 本文实例主要实现创建8位随机密码(大小写字母+数字),采用Python3生成了初级算法的随机密码。 主要功能代码如下: 希望本文所述实例对大家Pytho

  • 基本上,我正在尝试创建一个随机的车牌,其中包含三个大写字母(65,ASCII码)和三个数字。当我运行程序时,我得到了一个异常,即静态int z=Integer。parseInt(y) 。所以基本上我所做的是,我将字符串数组转换为字符串,然后将字符串转换为int,再将int转换为char,然后我做了一个while循环(如果字母不等于b),那么它应该可以工作。 你能帮帮我吗?还有,我应该有两种方法吗?

  • 本文向大家介绍jQuery随机密码生成的方法,包括了jQuery随机密码生成的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了jQuery随机密码生成的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的jQuery程序设计有所帮助。

  • 问题内容: 我正在尝试在php中生成一个随机密码。 但是我得到所有的’a’s,返回类型是数组类型,我希望它是一个字符串。有关如何更正代码的任何想法? 谢谢。 问题答案: 安全警告 :不是加密安全的伪随机数生成器。寻找其他地方以在PHP中生成加密安全的伪随机字符串。 试试这个(使用代替,因为在字符串上总是):