许多注册时会询问电子邮件确认的网站和网站在其网址中使用令牌。
为什么要使用它?
例如,在电子邮件确认的情况下:为什么不使用注册用户ID而不是令牌?!如果在网页中使用它,我根本没有得到!!
真实应用程序的解释将不胜感激!
提前致谢!
答案 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。另外,我在撰写这篇文章之后就得到了这个链接,看到他们使用了一个非常相似的例子 - 真正的巧合哈哈。