mt_rand是否能够产生足够安全的结果来生成承载令牌?

时间:2019-10-17 14:07:54

标签: php rest authentication bearer-token

对于我的客户,我需要创建承载令牌,以便能够向我的API进行身份验证。因此,为了创建它们,我想到了random_byteshttps://www.php.net/manual/en/function.random-bytes.php

但是在一种实现方式中,我看到使用mt_rand而不是专门使用这段代码:

function gen_bearerToken(int length): string
{
  $bearer="";
  $pool='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRTUVWXYZ';
  for($i=0;i<$length;i++){
     $bearer .= substr($pool, mt_rand(0, strlen($pool) -1), 1);
  }

  return $bearer;
}

但是,正如我所看到的,mt_rand https://www.php.net/manual/en/function.mt-rand.php不会生成加密安全的随机字节,因此,我认为将生成弱的易于猜测的令牌。

历史也证明,临时解决方案通常在安全性方面失败,而不是长期建立的解决方案。我担心的错误还是长度足够大(> 100),可以保证安全?

0 个答案:

没有答案