电子邮件验证码 - 是否为uniqid?

时间:2012-11-02 15:17:35

标签: php mysql pdo

所以我正在编写一个简单的用户系统,我希望用户验证他们的电子邮件地址(就像几乎所有其他网站一样)。您认为生成此字符串然后用于验证用户的最佳方法是什么?

起初我以为我会使用uniqid(),但我正在考虑更多关于它应该记住什么类型的安全问题。

PS。我正在使用PDO w / prepare(MySQL);我应该对数据库操作进行哪些其他消毒处理?

2 个答案:

答案 0 :(得分:1)

您希望能够生成一个足以在外部重现的字符串。例如,用户电子邮件地址的简单SHA1哈希很容易复制,不适合。

由于散列函数的工作方式,你总是可以在一个“秘密”中飙升,它可以运行得很好。例如,生成一个用于此目的的长随机字符串常量,并将其附加到用户的电子邮件地址,然后对其进行哈希处理。您还可以生成随机字符串作为验证令牌。

无论使用哪种方法,请务必在其记录列中记录您发送给用户的验证令牌,并在此列上索引表格,以便快速检索检索时间。稍后你会这样做:

SELECT * FROM users WHERE verification_token=?

如果您能找到与该令牌匹配的条目,您知道它是有效用户,并且可以将其标记为已验证。

答案 1 :(得分:-2)

用户的最佳解决方案 - 不使用电子邮件验证。这是一种非常古老而乏味的技术(许多用户使用10minutemail)。

相关问题