使用Python的uuid.uuid4生成的密钥进行邮箱验证是个好方法吗?
我想在我的网站上实现电子邮件验证。
我打算给用户发送一封电子邮件,里面有一个链接,用来验证他们的电子邮件地址。这个验证链接里我计划包含一个用以下方式生成的密钥:
str(uuid.uuid4())
这个验证链接会在一段时间后过期。
我有几个问题:
这样做好吗?安全可靠吗?
我需要检查uuid.uuid4()生成的值是否唯一吗?
uuid.uuid4()生成的值作为URL的一部分安全吗?
1 个回答
2
这个方法好吗?安全可靠吗?我需要检查uuid.uuid4()是否唯一吗?uuid.uuid4()的值可以用在URL中吗?
是的,这个方法对于邮箱验证来说是足够的。
根据Georg Schölly的说法,
uuid4()会生成一个随机的UUID。发生重复的几率非常非常小,小到你根本不需要担心。问题在于,如果随机数生成器不好,就会增加重复的可能性。
他还引用了Bob Aman的话,
坦白说,在一个没有恶意行为者的应用环境中,地球上所有生命的消亡都会在你遇到重复之前发生,即使是使用版本4的UUID,哪怕你每秒生成很多UUID。
所以我认为这个方法对于邮箱验证来说是安全可靠的。你不需要特别去确保UUID4是唯一的(不过在生成时检查一下也无妨)。另外,只要UUID是以十六进制编码的(它的标准形式),那么它就可以安全地用在URL中。