这个问题是由不设置最大密码长度是否存在安全风险?提出的。
具体来说,公认的答案,https://security.stackexchange.com/a/238033/9640说,限制是建议的,以避免耗尽服务器。
而且,在我看来,如果服务器将密码哈希为n位数字哈希,则拥有超过n位数的密码没有安全优势。如果实体可以合理地强制使用n个数字空间,则不必强制(n+1)数字空间强制使用您的(n+1)数字密码。实际上,1000位密码并不比500位密码更安全。
但是,如何双哈希密码。
用户输入任意长度的密码。客户端将密码哈希为固定长度。如果客户端的哈希不是固定长度(保护服务器免受资源耗尽),服务器可以拒绝它。否则,服务器将客户端的散列作为密码,并以通常的方式继续进行(重新哈希)。这样,如果您想要一个10,000个字符长的密码,就可以使用它。您的浏览器将不知不觉地将您的10,000个字符长密码转换为一个128个字符长的密码(仍然非常安全),而服务器中唯一的更改是,现在服务器知道所有密码都必须是128个字符长,这样才能更容易地拒绝某些登录。
该方案的主要好处是,用户永远不会被告知“您的密码太长”。我个人认为这一信息令人沮丧。但我承认,这种好处并不是巨大的。因此,如果有安全漏洞,我没有看到,这个计划可能是不值得的。