当有人在我的网站上注册时,他会收到一个确认链接,让他完成注册。
我的想法是在表“Users”中创建一个随机生成的数字列。接下来,我发送一个指向用户电子邮件的链接,示例链接:http://example.com/confirm.php?user=newuser&code=54355345534
当他点击它时,它会从表用户的链接号码中检查他的登录名和号码
它工作正常,但我需要额外的列。这是个好主意吗?我有第二个想法,它使用Salt作为确认码,这是好还是不好?
修改:可以将其移至https://security.stackexchange.com/吗?
答案 0 :(得分:3)
这可能更适合security.stackexchange.com。
有了这样的说法......创建一个将未经验证的用户ID映射到一个大的随机数(可能是一个UUID)然后通过电子邮件发送给用户的新表有什么问题?该解决方案的成本应该最小,所以我不明白为什么你会打扰实现其他任何东西。
发送盐不应该有任何实际问题,但这取决于你如何生成盐;如果您使用的是良好的PRNG,理论上应该没问题。否则,它可能是一个问题:例如,如果您使用顺序计数器或时间戳作为盐值的生成器,那么这不是那么好。问题不在于您是否泄露盐本身,而是您泄漏的信息可能允许恶意用户“猜测”下一个验证令牌将是什么,这意味着他们将能够验证他们的帐户而无需一个有效的电子邮件地址。