【问题标题】:generate passwords for all users for a web app为 Web 应用程序的所有用户生成密码
【发布时间】:2016-06-23 08:49:12
【问题描述】:

我正在使用 ruby​​ 和 hanami 构建应用程序,但我认为我的问题可能与框架无关。该应用程序的用户将登录以预约会议。用户的密码将使用 bcrypt 加密。

我的问题是关于用户创建的。用户不会注册,但他们将由管理员预先创建。所有用户数据都已采用 csv 格式,可以直接导入数据库,管理员无需单独创建每个数据。

是否可以这样做,并且在导入其余数据后还为所有用户生成密码(如初始密码)?

问候

塞巴

【问题讨论】:

    标签: ruby web-applications passwords hanami


    【解决方案1】:

    这里的最佳做法是同时使用不同的密码哈希字段和注册确认令牌字段。注册令牌以随机字符串的形式生成,这种字符串非常难以猜测,并被发送给创建的用户。通常这是通过电子邮件完成的,但它可以是任何允许您发送链接的东西。

    这些链接看起来像:

    http://example.com/confirm/IVfltNx18MEgU57pvtRGg2lx
    

    最后一点是您的确认令牌。

    您使用该确认令牌查找任何用户记录,然后询问该用户的初始密码。这就是您保存在数据库中的内容。届时,您可以决定永久禁用此 URL。有时这对安全性很重要,有时这非常不方便,因为用户会抱怨他们的注册链接不再有效。您必须评估保持其活跃的风险和收益。

    通常,此注册系统可以与您无论如何都需要的“重置密码”功能结合或扩展。对于邀请,最好在第一次创建密码时解释用户设置密码的目的,您可能需要解释服务是什么,以免他们感到困惑,而对于重置请求,他们已经知道要做什么期待。

    【讨论】:

    • 感谢您的信息,但用户不会“注册”,只是“登录”,我需要知道管理员是否可以自动创建用户,尤其是设置初始密码为用户。如果我的上述问题需要澄清或更详细的描述,请告诉我。
    • 我建议您在管理员创建这些帐户时向用户发送一系列带有链接的电子邮件。当您“邀请”某人加入系统时,大多数系统都会这样做。
    • 我明白了,对。我想尝试的是像你建议的那样为管理员设置一个功能(在从 csv 导入基本数据之后),只是为了自动生成初始密码。因此,查找所有用户并生成随机密码,然后使用这些加密密码更新用户,并将密码一次性发送给用户。当然,他们必须更改此初始密码。您认为这是可行的还是有任何明显的缺陷?
    • 在这里称它们为“密码”是错误的。只有用户应该知道他们的密码,为他们生成密码会带来麻烦。如果您需要一些秘密来启动该过程,请将其称为“注册码”,它的随机性足以让人猜不透。您可以将这些纯文本保留在数据库中,以便与密码区分开来。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-14
    • 1970-01-01
    • 1970-01-01
    • 2015-10-16
    • 2011-09-21
    • 1970-01-01
    • 2016-07-26
    相关资源
    最近更新 更多