gpt4 book ai didi

ruby-on-rails - 使用 Devise 防止密码重复使用

转载 作者:行者123 更新时间:2023-12-04 23:28:07 24 4
gpt4 key购买 nike

我知道强制密码在用户创建密码后的一段时间后过期不是设计逻辑的一部分,我打算编写自己的代码来实现这一点。

强制用户不要重复使用最后 X 个(在我的情况下为 10 个)密码中的一个似乎也需要手动编码。

我的想法是我将创建一个类似于 user_passwords 表的东西,并在我的代码中使用逻辑来确保新密码与该用户表中的任何密码都不匹配。同时,我会将新密码插入表中,除非该用户已经有 10 条记录,这意味着我会用新值覆盖最早的记录。表结构将是这样的:

用户密码

  • 用户 ID
  • encrypted_pa​​ssword
  • created_at

  • 如果有人有更好、更优雅的解决方案来处理这个问题,我将不胜感激。

    最佳答案

    I know that forcing passwords to expire after a certain period from the time the user creates them is not part of Devise logic, and I'm planning to write my own code to make that happen.



    在实践中,与安全相关的研究发现这是一个坏主意。那是因为每次更改的返回都会递减。也就是说,密码从强开始,然后随着用户尝试遵守策略而逐渐变弱。参见 Peter Gutmann 的 Engineering Security和第 7 章,密码。

    从书中,其他愚蠢的事情包括复杂性要求。 (在你反对之前,请阅读本书的相关部分)。

    ... create something like a user_passwords table and use logic in my code to make sure the new password doesn't match any in that table for that user.



    一旦你阅读了这一章,我就会问:为什么你首先允许用户选择弱/受伤/损坏的密码?当与 Mark Brunett's list of 10 million leaked passwords 结合使用时,那些 60 KB 布隆过滤器看起来非常有用:)

    Preventing password reuse...



    会受到伤害的重用是跨站点的密码重用。 Brown、Bracken、Zoccoli 和 Douglas 在 Generating and Remembering Passwords 中表示这些数字约为 70%。 (应用认知心理学,第 18 卷,第 6 期,第 641-651 页)。 Das、Bonneau、Caesar、Borisov 和 Wang 在 The Tangled Web of Password Reuse 中报告了大约 45% 的数字。 .请注意,Tangled Web 研究必须破解密码,因此该数字可能更高,因为他们无法恢复所有密码

    根据Das、Bonneau、Caesar、Borisov 和Wang 在 The Tangled Web of Password Reuse 中的说法,为了使重用成为一个更严重的问题,用户必须记住大约25 个不同站点的密码。 .

    几年前我什至被这个烧伤了。我在两个低值(value)账户上使用了相同的密码。然后 GNU's Savannah被黑客入侵,攻击者能够使用恢复的密码来破坏一个很少使用的电子邮件帐户。

    现在,当我需要凭据时,我只生成一个长的随机字符串。对于大多数网站,我什至懒得把它们写下来。当我需要再次访问某个站点时,我只需完成恢复过程。

    关于ruby-on-rails - 使用 Devise 防止密码重复使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9186304/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com