0

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

起初我以为我会只使用uniqid(),但当我更多地考虑它时,我应该记住哪种类型的安全问题。

PS。我正在使用带准备的 PDO(MySQL);我应该对我的数据库操作进行哪些其他消毒?

4

2 回答 2

1

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

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

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

SELECT * FROM users WHERE verification_token=?

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

于 2012-11-02T15:58:15.620 回答
-2

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

于 2012-11-02T15:37:00.307 回答