对于我的客户,我需要创建承载令牌,以便能够向我的API进行身份验证。因此,为了创建它们,我想到了random_bytes
:https://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),可以保证安全?