我有一个用户注册流程,我会向用户发送电子邮件以进行电子邮件验证并激活他们的帐户。现在,当点击电子邮件中的activate link
时,如何通过点击电子邮件中的链接获取引荐来告诉我用户是否来到该页面?
答案 0 :(得分:6)
在生成电子邮件之前,您将为该用户生成唯一令牌。然后,您将该令牌附加到URL,执行验证的页面将检查用户名和验证令牌。如果匹配,则用户已验证其电子邮件。
例如,您的电子邮件将包含指向http://www.example.com/process.php?user=foo&validate_token=bar
的链接。然后,您的process.php
页面会检查以确保foo
用户的验证令牌实际上是bar
。如果是,则用户foo
已验证其电子邮件地址。
答案 1 :(得分:0)
您需要生成某种类型的ID,并将其与用户信息一起存储在数据库中。当用户点击链接时,它将附加唯一ID,如:
http://www.mygreatsite.com/verify?user=username&id=1234
您将根据数据库中的任何现有ID检查ID,如果匹配,请在
中允许它们答案 2 :(得分:0)
您不能以任何方式信任推荐人。有很多私人浏览插件和其他东西会阻止引用者正确传递。
答案 3 :(得分:0)
用于注册的电子邮件链接的问题(与令牌无关)是,如果您在激活链接后立即访问数据库,那么对于一个乏味的人来说就很容易造成拒绝服务问题。我设计的简单解决方案:检查ip地址,基于ip地址重新定位到其他服务器(也就是将所有或大多数麻烦制造者转储到一个位置进行排序),然后显示要单击的表格(或重新捕获)在您进入数据库附近之前完成注册。本身还不够,但是还有一系列方便的附加墙可以添加到您的其他安全措施中,以防止来自模拟“注册”链接的dns攻击。还可以防止您的大多数合法人员在尝试DNS攻击时受到打扰。