【问题标题】:What is the basic concept used to verify emails on websites? [closed]用于验证网站上的电子邮件的基本概念是什么? [关闭]
【发布时间】:2020-11-15 22:31:05
【问题描述】:

问题: 我正在尝试在 Wix.com 上建立一个网站,我的一项功能是电子邮件验证。

背景: 我目前的流程是用户注册,这会将他们带到 www.abc.com/example?id=12345,其中 12345 是数据库生成的随机数,该随机数对数据库中的每一行都是独立的。

然后用户会收到一封电子邮件,其网址为 www.abc.com/verify?id=12345 以打开以验证他们的帐户。

您可能会看到这是非常不安全的,因为有人可以执行此过程一次并弄清楚如何以其他人的名义创建帐户。

问题: 对此的标准行业方法是什么? 我目前的想法是使用用户无权访问的第二个 url 查询,因此无法猜测或解决,但我正在努力思考那会是什么

【问题讨论】:

  • 对不起,我对这个领域有点陌生,哈希和加盐是什么意思?

标签: javascript html url velo


【解决方案1】:

这样做没有“行业标准”。有许多创新的方法可以做到这一点。简而言之 - 如果它有效,它就会有效。

最常见的方法通常涉及

  • 生成随机码
  • 将该代码存储在数据库中
  • 当请求验证他们的电子邮件地址时,请在数据库中搜索代码。如果存在,您可以将代码所属的用户标记为已验证

这很简单。在我看来,您似乎陷入了“生成随机代码”部分。

有两种基本方法可以做到这一点。

1)生成随机数

2) 给电子邮件地址加盐

生成随机数

您可以生成一个随机数作为代码。这可以通过以下方式完成:

Random rnd = new Random();
int n = 100000 + rnd.nextInt(900000);

这会生成一个随机的 6 位数字。可以对其进行调整以适应更高的数字。这种方法的问题在于,如果您正在处理大量用户群,那么随机生成的数字很可能会开始用完。您必须添加验证方法以确保生成的代码尚未被使用。

给电子邮件地址加盐

这是最简单的方法。您需要做的就是确保没有重复的帐户使用相同的电子邮件。

对于初学者,您需要用户的电子邮件地址和他们的注册日期(用于加盐)。您可以连接两个字符串,然后执行加密哈希。如果你不知道怎么做,就去here

这样做的好处是,代码有无限可能的组合。

例子:

假设我的电子邮件是notmyaddressbutstilldarngood@domain.nice,而System.currentTimeMillis() 返回1605486656,您将在哈希notmyaddressbutstilldarngood@domain.nice1605486656,返回95e3dde92f8bb07e43b77c085f1ff2f166e1b9426f9b2f7a685171f4cd66b39c。所以你的网站链接是

www.abc.com/verify?id=95e3dde92f8bb07e43b77c085f1ff2f166e1b9426f9b2f7a685171f4cd66b39c

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-12
    • 2022-09-28
    • 1970-01-01
    相关资源
    最近更新 更多