验证未经验证的电子邮件地址?

时间:2011-11-19 13:30:04

标签: php mysql architecture

假设用户在拥有电子邮件地址的网站上注册,需要先接受用户注册才能进行验证。

一般方法是向提供的电子邮件地址发送电子邮件。然后,用户检查他/她的收件箱并单击一个链接,该链接将告知该站点该电子邮件地址是有效的。通常,链接中会嵌入某种代码,告诉网站这是否是对电子邮件地址的合法验证。

我的问题是关于代码。实施它的最佳方法是什么?一些想法:

  1. 在网站中输入新地址时会生成随机字符串。该随机字符串存储在DB中,然后通过电子邮件发送给注册人。电子邮件中的链接将包含随机字符串作为URL的一部分。
  2. 发送的电子邮件已经过哈希处理。这意味着不需要在数据库中保存任何内容,因为应用程序将知道如何取消此操作。 (我对这种方法的关注是,如果用户稍后将其电子邮件地址更改为他之前输入的内容,则哈希值将相同。不确定这是否会造成某种安全威胁。)
  3. 其他一些方法?
  4. 我正在寻找这个问题的一般建议。

2 个答案:

答案 0 :(得分:3)

第一个,即随机字符串,是最安全的(和AFAIK,最常见的)方式:它使我完全无法对我没有收到电子邮件的电子邮件地址做恶意处理

此外,您可以在成功完成后删除随机字符串,清楚地表明该特定地址不再需要激活。

答案 1 :(得分:2)

我每次都使用第一种方法

  1. 创建随机代码
  2. 将其存储在DB
  3. 使用可点击的链接(例如activation.php?key = blabla
  4. )将其邮寄给用户
  5. 在激活页面上,让用户也可以手动输入
  6. 提交比较密钥
  7. 激活用户
  8. 如果用户更改邮件地址返回1