UUID 随机性足够用于密码恢复链接吗?

问题描述 投票:0回答:2

Data::UUID是否生成安全且随机的序列?用它来生成密码恢复链接可以吗? 例如:

use Data::UUID; my $u = Data::UUID->new; my $uuid = $u->create_from_name_str(NameSpace_URL, 'www.example.com'); #then add $uuid to db #and send email to user
    
perl security uuid
2个回答
1
投票
我个人会使用

UUID::Tiny 因为它能够生成版本 4 UUID,更加随机。然而,在任何一种情况下,模块都只是使用 Perl 的 rand

 函数,对于严肃的加密工作来说,该函数被认为不够随机。

尽管如此,对于典型的密码恢复电子邮件来说,这可能是足够随机的。特别是如果密码恢复链接仅持续工作(例如 24 小时),然后就停止工作。

这实际上取决于您要保护的内容。这是一个发布穿着超级英雄服装的宠物照片的论坛,还是核发射代码?如果您认为您的网站可能成为犯罪分子的目标,那么选择更强大的网站可能是明智的选择。

可以使用以下方法生成相当好的具有低冲突概率的随机字符串:

use Crypt::PRNG; my $string = sprintf( q/%08x%s/, time(), Crypt::PRNG->new->bytes_hex(24), );
    

1
投票
Data::UUID 可以生成

版本 1 (create

) 或
版本 3 (create_from_name
) UUID。这些都不是随机的。版本 1 是您的 MAC 地址加上时间戳,版本 3 是您传入的字符串的 MD5 哈希值。

© www.soinside.com 2019 - 2024. All rights reserved.