我想为正在注册或更改密码的用户推荐自动生成的密码。如何解决这个问题?
首先,提供生成密码的原因是为了防止用户使用弱密码(例如monkey
)。我可以(并且仍然会)对密码实施某些限制:它们必须同时包含小写和大写字母、数字和标点符号,并且必须足够长。强制执行这些类型的规则仍然会导致糟糕的模式,例如简单地将所需字符附加到原始弱密码(例如Monkey3!
)。还存在其他常见模式(例如m0nk3y
)。
完全随机的密码(例如I1ZkFdt5OOX35Rp
或B13v}lo90m%~zrY
)很难记住。它们通常最终写在一张纸上。如果可以选择,用户在遇到这样的怪物时会回到自己的弱密码。
但是,如果足够长(是的,相关的 xkcd),简单的密码可以很强大。我想生成这样的密码,以便它们在仍然强大的同时很容易记住:
MooseCoolSuggestionDude
RegisterAmericaFoolDinner
假设我有一个存储在某处的单词列表,那么该存储可能会受到损害。获得该列表的任何人都可以生成我提供给用户以用作密码的所有可能组合。所以这是一个潜在的安全风险。
我考虑了一些额外的随机化。如果我在生成的密码中添加随机数和标点符号,例如
Moose5CoolSuggestion-Dude
Register.America31FoolDinner
这可以作为一种安全的方式来提供令人难忘的自动生成密码吗?还有其他想法吗?