我正在用Java编写Web应用程序,在某些时候用户可以输入电子邮件地址来接收电子邮件。我的问题是关于验证这个电子邮件地址(所以它不是关于验证!)。我也用google-app-engine标记了这个问题,因为应用程序会在那里存在,但我认为这并不重要。
无论如何,对于拥有Google帐户的用户,我使用应用引擎的用户API来验证该地址,但对于我想发送验证电子邮件的其他人,则会为他们提供网址。我认为非常标准,但是还有标准方法来生成URL吗?或者只是创建电子邮件地址的哈希值,将其存储在数据库中并将其作为参数放在URL中?
答案 0 :(得分:2)
我不会在验证电子邮件中使用电子邮件哈希。这很容易猜到,有人可能会试图伪造它。
如果我要实现它,我会添加随机GUID并将其存储到数据库进行验证。我不知道这是否是进行验证的标准方式......
答案 1 :(得分:1)
创建一个servlet,在给定密钥(比如一些随机字符串)的情况下检查该密钥是否先前已发出。密钥需要在crytopgraphically安全,以便攻击者无法猜测它是否像某人一样。
然后,当有人使用电子邮件注册时,您会将包含该密钥的链接发送到他们声称拥有的地址。如果将来某个时候,您发送的链接到达您的服务器,您可以记录该事件,并确信该电子邮件地址是正确的。