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
UUID::Tiny 因为它能够生成版本 4 UUID,更加随机。然而,在任何一种情况下,模块都只是使用 Perl 的 rand
函数,对于严肃的加密工作来说,该函数被认为不够随机。尽管如此,对于典型的密码恢复电子邮件来说,这可能是足够随机的。特别是如果密码恢复链接仅持续工作(例如 24 小时),然后就停止工作。
这实际上取决于您要保护的内容。这是一个发布穿着超级英雄服装的宠物照片的论坛,还是核发射代码?如果您认为您的网站可能成为犯罪分子的目标,那么选择更强大的网站可能是明智的选择。
可以使用以下方法生成相当好的具有低冲突概率的随机字符串:
use Crypt::PRNG;
my $string = sprintf(
q/%08x%s/,
time(),
Crypt::PRNG->new->bytes_hex(24),
);