在仅限邀请的网站上通知新用户密码的最安全方法是什么?

信息安全 密码管理
2021-08-22 07:19:11

我正在开发一个人们将拥有帐户的网站。但是,与大多数网站不同,用户无需注册,而是由网站管理员邀请。站点管理员将根据他们的电子邮件地址创建一个新的用户配置文件,然后希望站点向他们发送电子邮件,告诉他们他们的配置文件已准备好使用。

但是,我不确定让人们知道密码的最安全方法。在正常注册中,用户输入他们选择的密码,该密码经过哈希处理并存储。剩下的就是向他们发送一个链接以验证他们的电子邮件地址。

在我们的例子中,他们没有注册,所以不要提供密码。什么是最安全的进行方式?

这个答案建议向他们发送一个链接到他们可以看到他们的密码的页面,但我不确定这是否比将他们发送到他们可以输入自己的密码的页面有什么好处。其实我觉得后一种建议比较好,好像密码已经设置好了,网页可以通知他们密码已经设置,如果不是他们,马上联系管理员。

在安全方面,通知新用户密码的最佳方式是什么?

4个回答

在这种情况下,最佳做法是向他们发送一个链接,让他们可以设置自己的密码。

您应确保在他们使用此链接注册后,该链接不能用于帐户接管。实现此目的的一种方法是在 URL 中包含时间有限的一次性令牌。

您应该只向新创建的用户发送一个链接,他们可以在其中设置自己的密码。但请考虑以下想法以防止滥用,因为邮件是以纯文本形式发送的:

  • 确保链接只能使用一次(所以只有在用户还没有密码的情况下)
  • 可能会设置一个日期,直到需要设置密码,否则他们需要请求新链接
  • 随机链接生成,因此(几乎)不可能猜测电子邮件的链接
  • 添加另一个验证步骤(例如要求他们输入他们的电子邮件和/或生日)

根据我的经验,它通常以两种方式完成。

David Waters 已经描述了一种方法,所以我不会谈论它。

另一种方法是向他们发送一次性使用密码,他们必须在特定时间范围内更改(通常是 48 小时窗口)。

使用这种方法,您需要确保他们收到一个随机密码,该密码足够安全,不会被暴力破解,并且是唯一的,不能再次使用。

用户使用此密码连接后,网站应将他们重定向到可以选择密码的页面。

要求您的用户通过 OpenID 或 Oauth 提供商(例如 Google、Microsoft、Amazon 等)进行首次身份验证,以验证他们的身份。这避免了通过电子邮件向用户发送密码的任何安全问题。