我想在我的网站上进行电子邮件验证。
我计划给用户发送一封电子邮件,并附上验证电子邮件地址的链接,其中的验证链接我计划包含一个密钥。
str(uuid.uuid4())
这个验证链接会在一段时间后失效。
我的问题是:这是个好办法吗?
我是否需要检查uuid.uuid4()是否是唯一的?uuid.uuid4()的值作为URL的一部分是否安全?
我是否需要检查uuid.uuid4()是否是唯一的? uuid.uuid4()的值作为URL的一部分是否安全?
是的,这对于电子邮件验证来说应该足够了。
根据 Georg Schölly,
uuid4()会生成......一个随机的UUID。碰撞的几率是非常非常小的。小到你不应该担心这个问题。问题是,一个糟糕的随机数生成器使它更有可能发生碰撞。
然后,谁引用了 鲍勃-阿曼,
坦率地说,在一个没有恶意行为者的单一应用空间里,即使你每秒生成不少UUID,在你发生碰撞之前,地球上所有生命的灭绝早就发生了,即使在4版UUID上也是如此。
所以我想说,这对于邮件验证来说是安全可靠的。而且应该不需要确保UUID4是唯一的(但我在生成UUID时检查一下也无妨)。另外,只要UUID是十六进制编码的(其规范形式),作为URL的一部分是安全的。