我已将此帐户创建电子邮件发送给尝试创建帐户的任何人,因为我需要验证他们是否是他们所说的人。
但是,我的问题是,他们收到我的电子邮件时需要点击的网址太长,而且有些电子邮件客户端处理得不好,有时也会截断网址,从而导致点击后网址无效。
因为URL包含域名,散列电子邮件和长激活码。它看起来像这样。
http://domain.com/activation?email=75a5867d3df134bededbaf24ff17624d&key=8fecb20817b3847419bb3de39a609afe
虽然有些电子邮件客户端可以使用,但有些不是......而且我不想使用HTML电子邮件,而是坚持使用普通/文本电子邮件。我也听到了使用URL缩短器的可怕故事,所以我不确定是否应该使用它们......
对此领域的任何见解表示赞赏!
答案 0 :(得分:0)
我绝对同意Jason:缩短你的网址。
想想你真正需要什么。
substring (base64_url(md5(email+salt)), 0, 5)
。 5个base64个字符是64 ^ 5 =大约10亿个可能性。这可能足够安全(如果有人使用错误的电子邮件地址注册,那么真正的损害是什么)。因此,您的网址为http://domain.com/activation?email=1234&key=aD5Y_
,http://domain.com/activation?e=1234&k=aD5Y_
甚至是http://domain.com/activation?e=1234aD5Y_
。在最后一种格式中,您知道最后5个字符是键,所以其余的是id。请注意,代码示例假定md5以8位字符串格式(而不是十六进制字符串格式)返回,base64_url使用url safe base64 method。此外,a salt上的一些背景信息。http://domain.com/redirect?key=rT-tW
。当您在应用程序中看到此内容时,只需从数据库/ memcached中检索原始URL并在那里重定向。请确保您的系统对以下内容具有强大功能:
执行此操作的一种方法是确保在密钥生成中使用电子邮件地址本身(而不仅仅是用户ID),如上所述。