我正在制作一个网站,我正在决定密码策略。什么是好的密码?我真的不知道。我猜密码应该至少有 6 个字符长。
编辑:对密码应该有多“复杂”有什么建议吗?例如需要 2 个数字 2 个语法字符,密码的其余部分可以是什么?
我正在制作一个网站,我正在决定密码策略。什么是好的密码?我真的不知道。我猜密码应该至少有 6 个字符长。
编辑:对密码应该有多“复杂”有什么建议吗?例如需要 2 个数字 2 个语法字符,密码的其余部分可以是什么?
Bruce Schneier 写了一篇关于这个主题的好文章,我建议你看看。简而言之:
大多数用户倾向于使用类似的密码模式,并且有一些工具非常擅长猜测它们(成功率高达 65%)。
这种模式,正如这里所讽刺的那样,包括使用一个字典单词(通用或非通用),其中一些字母根据通用规则(例如4
for A
)替换,然后是(或更罕见的前缀)一个简单的词缀(通常是数字)。
这种密码的“危险”在于它们提供了复杂性和安全性的错觉,而实际上它们相对容易破解(假设是离线攻击者)。
包含传记数据(例如姓名、地址、邮政编码)的密码更容易破解,因此应劝阻用户不要使用它们。
非常短的密码(4 个字符或更少)也容易受到详尽搜索的影响。
因此,一个好的密码应该有合理的长度(OWASP 推荐的 8 个字符可能是可以的,但原则上越长越好)并且不遵循易于识别的模式。
或者,它可以遵循一种模式,但不能轻易复制。一个例子是在一个句子中思考,并从该句子中每个单词的第一个字母创建一个密码。
另一种选择(也建议在文章中,虽然我个人不同意)是将词缀(数字序列)放在词根(单词)的中间,或者使用两个单词与词缀连接在一起。
恕我直言,最重要的是没有“最大密码长度”,或者,如果不可避免的话,将该最大值保留在一个非常高的值(例如 64 个字符)。由于您不会存储密码本身,而是存储密码的安全哈希,因此长度不应影响您的后端设计。
(也不要试图“强制”过多的密码复杂性,否则您的用户将开始积极与您对抗 - 例如通过写下他们的密码)
引用 OWASP 的最佳实践:
密码长度 密码长度考虑了构成用户密码的字符的最小和最大长度。为了便于更改此长度,可以使用属性文件或 xml 配置文件对其实现进行配置。
最小长度。 密码长度应至少为八 (8) 个字符。将此长度与复杂性相结合使得密码难以猜测和/或暴力破解。
此外:
密码复杂性密码字符应该是字母数字字符的组合。字母数字字符由字母、数字、标点符号、数学和其他常规符号组成。有关所指的确切字符,请参见下面的实现。对于更改密码功能,如果可能,请保留使用的旧密码哈希的历史记录。如果数据库文件遭到破坏,您不应存储实际密码以防止暴力破解。通过这种方式,用户无法更改为几个月前使用的密码。
同样重要的是密码是如何存储的?OWASP 也有一些关于如何安全地存储密码哈希的建议。欲了解更多信息,请阅读此处
OWASP 对如何处理密码和登录/密码重置表单有很多很好的建议。我强烈建议您通读这些内容并尽可能多地学习。
希望有帮助!
来源:https ://www.owasp.org/index.php/Password_length_%26_complexity#Best_practices
密码的强度与随机性一样强。您无法测试用户在他的大脑中发明的密码的随机性,因为随机性是生成过程的属性,而不是结果的属性。您的网站将只看到结果。
但是,您可以排除太短的密码,因为短密码可以进行非常原始的详尽搜索,这意味着尝试所有字母组合达到一定长度。您必须避免的主要风险是激怒用户:密码的强度取决于用户的选择,因此您必须让他成为网站政策的自愿贡献者。用户自己对站点安全性不是很感兴趣。他输入密码是因为他必须这样做(该站点强制输入密码),但他认为密码是一个障碍:他来该站点不是为了输入密码,而是为了访问该站点包含的任何页面。
这归结为以下建议:
强制密码长度至少为 8 个字符。仅此而已;但人们习惯于输入 8 个字符的密码。如果您要求更多,用户会抗议(他们会通过选择“机智”的密码来抗议,这些密码根本不强)。
您可能需要混合使用字母和数字。但不要过度。字母和数字都可以;不要强制使用大写/小写混合或标点符号:这些在智能手机和平板电脑上明显难以打字。
提供一个可选的密码生成器。由于人脑不善于产生随机性,所以使用计算机。但请注意不要强制生成器:用户必须将其视为有用的工具,而不是不可避免的规定。因此,提供一个“生成一个好的密码”按钮,该按钮生成一系列小写字母和数字(请注意,不要太长;8 个字符)。
发布指南,解释什么是好的密码(即随机密码)。用户喜欢被授权的感觉。另外,警告他们关于非 ASCII 字母的可用性问题:重音、非拉丁字符……如果他们使用它们,他们的生活会变得更加艰难。
您谈到了密码策略,其中还包括密码更改持续时间。如何衡量好密码?
Strong property has inverse relation with memorable
然后,由您来决定它们,哪个更关键?然后您将其设置为高优先级,但考虑每个密码必须符合一些规则(最低要求):