如果链接是从电子邮件中点击的,则推荐人URL


Referrer URL in case if the link was clicked from email

我有一个用户注册过程,在这个过程中,我会向用户发送一封电子邮件,以进行电子邮件验证并激活他们的帐户。现在,当点击电子邮件中的activate link时,我如何获得"告诉"我用户是否通过点击电子邮件链接进入页面的推荐人?

在生成电子邮件之前,您要为该用户生成一个唯一的令牌。然后将该令牌附加到URL,进行验证的页面会检查用户名和验证令牌。如果匹配,则用户已验证了他们的电子邮件。

例如,您的电子邮件将包含指向http://www.example.com/process.php?user=foo&validate_token=bar的链接。然后,您的process.php页面将进行检查,以确保foo用户的验证令牌实际上是bar。如果是,则用户foo已经验证了他们的电子邮件地址。

您不能以任何方式信任引用者。有很多私人浏览插件和其他东西会阻止推荐人被正确传递。

您需要生成某种类型的id,并将其与用户信息一起存储在数据库中。当用户点击链接时,它将有一个唯一的id附加到它上面,就像:

http://www.mygreatsite.com/verify?user=username&id=1234

您将根据数据库中的任何现有id检查id,如果匹配,则在中允许它们

无论令牌是什么,注册的电子邮件链接的问题是,如果您在激活链接后立即访问数据库,那么一些乏味的人很容易创建拒绝服务问题。我设计了一个简单的解决方案:检查ip地址,根据ip地址重新定位到不同的服务器(也就是说,将所有或大多数麻烦制造者转储到一个位置进行排序),然后在你去数据库附近的任何地方之前,出示一张表格点击(或重新获取)以完成注册。这本身还不够,但它是一个方便的附加墙系列,可以添加到您的其他安全措施中,以防止模拟"注册"链接的dns攻击。还可以保护您的大多数合法用户在DNS攻击中不受干扰。