设计你的密码策略
通过 Logto 确保认证过程的安全性,获得有关创建符合要求、安全且用户友好的产品密码策略的见解。
通过 Logto 确保认证过程的安全性,获得有关创建符合要求、安全且用户友好的产品密码策略的见解。
在你的产品中,你可能需要依赖经典的认证方法——密码。虽然密码不会被完全取代,但与替代认证方法相比,它们更容易受到攻击。你的密码策略真的安全吗和合规吗?即使你熟悉各种密码策略技术,把它们叠加在一起真的有效吗?
我们通过对 NIST 规范的深入研究、检查领先产品的密码策略,并确保用户体验的平衡,解决了密码策略设计和配置的复杂性。强调密码合规性的重要性,我们的目标是减轻与密码策略相关的挑战,并提供一个全面的流程,通过与其他多因素认证 (MFA) 验证因素的无缝集成,确保账户安全。
产品设计师经常在他们的产品是否足够安全的问题上苦苦挣扎,从而实施严格且复杂的密码策略。例如,要求大写、小写字母、数字,甚至是特殊字符的组合,或者要求员工定期更改密码。
当面临这些密码要求时,用户很快就会抱怨:“为什么它必须这么复杂?记住我的密码感觉就像是全职工作!”这让产品经理挠头,想知道更复杂的密码策略是否一定更好。让我们分析一下综合密码策略的组成部分以找出答案。
在下一部分中,我们将深入探讨密码策略之间的细微差别,找到安全性和用户便利之间的平衡。我们将探讨如何定义正确的密码要求,并提供数据支持的见解来支持我们的做法。
首先,通过分析大量产品和 NIST 规格,我们编制了一份全面的密码因素列表和设计建议。
我们大致将它们分为三组:
| 类目 | 因素 | 分析(参考 https://pages.nist.gov/800-63-3/sp800-63b.html#sec5 ) |
|---|---|---|
| 设置密码要求 | 长度 | 增加密码长度比复杂性更能有效阻止密码破解。NIST 建议长度至少 8 个字符,但应允许更长的密码。 |
| 字符类型 | 密码可以支持多种字符类型,包括大写字母、小写字母、数字、符号和 Unicode(应允许使用空格字符)。 | |
| 密码策略不应提示用户回忆特定类型的信息,因为这已被证明在增加复杂性的同时并未有效增强安全性。https://www.notion.so/General-f14f0fb677af44cb840821776831a021?pvs=21 | ||
| 低安全性短语 | 建议在用户使用易于猜测或破解的模式时提示用户更改密码,例如重复或连续的字符、常用词、用户信息或产品上下文信息。 | |
| 泄露密码 | 应将新的用户密码与泄露密码列表进行检查,以确保它们未被泄露。 | |
| 密码安全监控 | 密码验证速率限制 | 限制连续错误密码尝试的次数。当达到此限制时,实施安全措施,例如要求多因素认证 (MFA)、发送推送通知、施加冷却时间,甚至暂时冻结账户。 |
| 强制更改密码 | 不应要求密码随意更改。但若验证者发现认证器已被破坏,则必须强制更改密码。 | |
| 密码历史 | 保留过去密码的记录,以防止重复使用。不推荐对密码重用施加过多限制,因为用户可能通过微小修改绕过此规则。 | |
| 更改密码后清除会话 | 允许用户选择在更改密码后退出其他设备上的会话。 | |
| 密码输入体验 | 密码强度提示 | 向用户提供指导,帮助他们选择强而易记的密码。 |
| 密码提示 | 避免显示密码提示,因为这增加了非授权访问的可能性。 | |
| 复制粘贴密码 | 允许使用“粘贴”功能,以便用户使用密码管理器。 | |
| 查看密码 | 提供一个选项,允许用户查看输入的密码,而不是在提交之前显示一系列点或星号。 |
也许你没有耐心逐项检查清单。如果我们设计一个包含所有这些配置选项的强大密码工具,它可能会成为开发人员的一个难题,比复杂的密码策略本身更为复杂。因此,让我们将密码因素进一步简化为三个步骤。
如表中所述,一些过时的密码规则看似增强了安全性,但收效甚微,往往导致用户的沮丧和困惑。
我们为最低密码策略提供灵活的配置选项,并推荐值以减少开发者的学习曲线,并提供开箱即用的登录体验。这些选项包括:
对于不能进行自定义的参数,我们实施了备份逻辑以确保密码安全。如果你有特定的自定义需求,请随时告诉我们。
通过这三个简单的步骤,你可以简化配置你的密码体验的过程,找到安全性和用户便利之间的最佳平衡。Logto 使设置安全且用户友好的认证系统为你的产品变得容易。敬请期待我们的即将推出的 MFA 功能,并像从未有过的那样掌控你的产品的安全。