为什么需要令牌方案?

时间:2012-02-16 17:36:21

标签: authentication token verification

许多注册时会询问电子邮件确认的网站和网站在其网址中使用令牌。

为什么要使用它?

例如,在电子邮件确认的情况下:为什么不使用注册用户ID而不是令牌?!如果在网页中使用它,我根本没有得到!!

真实应用程序的解释将不胜感激!

提前致谢!

1 个答案:

答案 0 :(得分:1)

此上下文中的标记通常是用于验证的一次性时间限制随机字符串。可以轻松生成(例如)40个字符的标记[例如sha1(microtime() . rand(1, 10000)))],这是用户无法猜测的,并且不是暴力(在合理范围内)。

对于电子邮件验证,系统会生成一个令牌并与您的帐户ID相关联。当您访问包含令牌的地址时,该帐户将被激活。由于我们已经确定令牌不能被强制或猜测(在合理范围内),我们刚刚确定某个用户确实拥有他们给我们的电子邮件地址。

如果我们只是使用他们的会员编号,他们可以做几件事来猜测它,从而完全绕过电子邮件检查。


当登录或提交某种形式时,术语“令牌”可能会在略有不同的情况下使用 - 它仍然是一次性的限时随机字符串,但它用于确保提交的人表格刚刚来自他们试图提交的表格。

例如,假设您登录网上银行。他们可能有一张表格将钱转移到另一个银行账户。如果您访问www.nastysite.com,他们可能会包含一个指向<iframe src="http://www.mybank.com/send_money.php?amount=9001&to=Joe">的iframe。如果您的银行未确认您确实在表单上,​​则该付款将会通过,您将不会感到满意。即使您在表单上,​​表单中正确令牌在假页面加载中使用的几率几乎为零。

这称为“跨站请求伪造”或CSRF。有关CSRF的更多阅读,请查看this Wikipedia article。另外,我在撰写这篇文章之后就得到了这个链接,看到他们使用了一个非常相似的例子 - 真正的巧合哈哈。