生成/存储帐户激活码
Posted
技术标签:
【中文标题】生成/存储帐户激活码【英文标题】:generating/ storing account activation code 【发布时间】:2011-01-22 15:58:49 【问题描述】:通常在您注册后的任何网站上,他们都会向您发送一封包含帐户激活码的电子邮件, 有没有关于这种技术的一些信息/最佳实践? 比如你如何生成它们,你如何存储它们,你是否对这些激活码进行编码?
【问题讨论】:
相关问题:***.com/questions/2016710/…,***.com/questions/2033315/… 【参考方案1】:生成激活码可以像生成具有固定位数的随机数一样简单。
我个人这样做,然后将生成的代码与用户名/密码/电子邮件等一起存储在数据库的用户表中,以便在单击链接并运行检查代码时可以快速验证。
我通常使用“长”数据类型并生成 9 位随机数,并将这些原始(未编码)存储在数据库中以便于检索。密码应该进行编码,但激活码是一次性使用的一次性值,因此无需任何特殊考虑。
【讨论】:
您可能会为 2 个帐户生成相同的长值,使用 Guid 怎么样 没关系,因为 ID 只会用于您正在激活的帐户名称。你所需要的只是一些不可猜测的东西。【参考方案2】:恕我直言,最好的方法是不要存储密钥并在需要时使用种子或私钥生成它。或者使用 MD5 摘要类型的逻辑来使用特定的用户参数,例如,生成一个字符串“username-email-id”并将其散列并在用户再次单击它时将其发送到电子邮件中,尝试生成密钥并将其匹配用户密钥。无需储存,无法再生。
【讨论】:
以上是关于生成/存储帐户激活码的主要内容,如果未能解决你的问题,请参考以下文章