【问题标题】:Profile completion after e-mail verification电子邮件验证后完成个人资料
【发布时间】:2016-08-13 17:52:29
【问题描述】:

我正在为两种不同类型的用户构建一个 Web 应用程序,并为每个用户使用不同的注册表单。我可以拆分这些表单并在表单验证后发送验证电子邮件。

但我更喜欢使用一种通用的小表单,用户可以在其中输入他/她的电子邮件地址和用户类型。然后,服务器会发送一封带有链接的验证电子邮件,以进一步完成配置文件,具体取决于所选的用户类型。

现在我的问题是:我应该在小注册表中包含密码字段吗?我以前在很多网站上都看到过它,但我不明白为什么要包含它。我的计划是让用户在完成个人资料时选择他/她的密码。在他/她完成个人资料之前,不会存储有关用户的任何信息(我会在 URL 中使用时间戳安全地散列电子邮件地址)。

【问题讨论】:

    标签: security email-verification


    【解决方案1】:

    一般来说,开发人员在注册时会询问所有详细信息,包括密码,他们允许使用相同的密码登录。但是,存在未经验证的用户可以访问应用程序的全部或部分功能的公开风险。有时应用程序还会提供 24-72 小时的时间范围来激活用户帐户,在此期间用户可以访问帐户但有一些限制。

    对于敏感的应用程序,您可以在用户验证电子邮件地址后要求输入密码。因此,您对经过验证的用户感到放心。

    如果您提供无需验证即可访问用户帐户的功能,请确保未经验证的帐户用户可以根据您的应用程序上下文访问有限制的帐户。

    【讨论】:

    • 只有经过验证的用户才能访问应用程序或其帐户。正如我之前所说,电子邮件将与时间戳一起被安全地散列(我允许 24 小时的时间范围)。此哈希将附加到 url,并发送到提供的电子邮件地址。那么如果我这样做会不会有安全风险呢?
    • 最好只允许经过验证的用户访问该应用程序。正如您所提到的,您正在为验证过程安全地创建带有时间戳的哈希。如果您使用 SHA256 或更高的强哈希算法,则不存在安全问题。 Reference
    • 此外,从安全角度来看,应注意以下几点: - 密码重置 URL、注册 URL 应具有唯一令牌 - 唯一令牌应在使用后失效 - 唯一令牌应在 24-72 小时内失效,根据应用程序上下文 - 令牌不应被猜测 - 密码重置页面不应包含任何第三方库/css/javascript,因为引用标头可能会泄漏密码重置 URL,并且来自第三方的内部恶意用户可以使用它
    猜你喜欢
    • 2013-02-17
    • 1970-01-01
    • 1970-01-01
    • 2021-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多