更好地实现电子邮件激活链接

时间:2009-11-18 01:23:00

标签: php authentication

我已经看到很多通过电子邮件发送的激活链接,我实现了一个,但只是对它不满意(来自其他网站的长激活链接有点看起来很酷,但我看不出它的意义太长)。这是我的激活链接的样子

网站/控制器/方法/ 4 / MJKL

第3段是用户ID,第4段是注册期间随机生成的令牌......

我经常看到这是用url字符串实现的,但使用url字符串和使用url段时有什么区别?

如果我传递除用户ID和令牌之外的任何其他信息,它会有帮助吗?

3 个答案:

答案 0 :(得分:2)

他们可能在那里有更长的令牌,以减少攻击者正确猜测它的可能性。

不要打扰传递超出您需要的信息。并且不要因为另一个URL更长而嫉妒。大小没关系,或者他们告诉我;)

答案 1 :(得分:1)

是您关注的长度还是网址的外观?

我猜你正在使用Zend Framework或类似的东西,这就是为什么它显示“段”而不是参数字符串。

您是否考虑过使用tinyURL之类的东西? Tiny API with PHP非常容易。

编辑:如果您正在构建HTML电子邮件,则另一个选项是简单地保持锚文本

<a href="http://www.site.com/controller/method/4/MJKL">Click here to activate</a>

我仍然假设您要将网址缩短。如果你想让它更长,你总是可以附加会话ID,随机哈希或其他一些相对无用的信息,这些信息稍后会被忽略。

答案 2 :(得分:1)

如果您正在使用MVC设置,那么使用分段(以及更多SEO友好)URL:样式通常更有意义。但是,这与传递查询字符串没什么不同,因为服务器(很可能是Apache)正在获取输入URL段并将它们作为查询字符串传递给脚本。

至于长ID,这不是必需的。您可以生成自定义的,较短的ID标记,或使用uniqid()之类的东西生成较短的GUID供用户激活。