密码最大长度限制是愚蠢的(但我们需要它们)

密码最大长度限制可能非常烦人。如果您前往Github上的Dumb密码规则,您可以看到一堆服务,其最大长度限制令人生气。我同意,这些最大长度限制可能真的很烦人,但完全取消限制正确的答案? (破坏者:不是)我们应该如何修复密码字段?

人们喜欢在Twitter上抱怨密码最大长度。的。时间。在Stack Overflow上,人们甚至谈论没有理由限制密码长度,并且最大密码长度是安全警告。并且比他们抱怨更糟糕的是坚持存在密码最大长度是问题,而不是最大限制通常设置得非常低的事实(有时银行的有效性低至6个字符)。

密码的最大长度是一件好事。长密码拒绝服务是存在的事情。您在服务器端使用的去中心化算法可能有限制。更重要的是,已知的最大密码长度允许您测试所有密码字段。

最后一句话可能听起来有点奇怪,为什么你需要测试你的登录系统?为什么你需要测试长密码?考虑到将使用密码的所有地方。

显而易见的地方是登录屏幕。这些可以在您的网站,桌面应用程序或移动应用程序中。您是否知道所有这些地方是否允许您键入(或粘贴)1000个字符的密码?

你的注册页面怎么样,你需要在那里输入两次密码,以及其他信息。那些表单只能为密码处理2000个字符吗?

和密码重置页面。现在您需要当前密码和新密码两次。这可能需要输入3000个字符。

那么用户和密码存储之间的其他内容呢。 Web应用程序防火墙是否允许这么多数据?您的应用程序及其框架是否接受长密码?去中心化算法如何处理更长的字符串?

最后,您的密码更改字段是否允许您输入的密码比您的登录屏幕允许的更长,如Paypal所做的那样?

如果您没有测试您的应用程序以确保它可以处理设置为您允许的最大长度的密码,则不能100%确定最大长度的密码在整个系统中都有效。如果您没有定义的最大长度,那么您无法测试它。

所以你应该设置一个最大密码长度并测试它。但它应该多久? OWASP身份验证备忘单提供了实施正确密码强度控制的建议。

实施适当的密码强度控制(摘要)

  • 强制执行最小长度为8以阻止弱密码
  • 最大长度不要设置得太低
  • 不要截断密码
  • 允许所有字符(包括unicode和空格)
  • 轮换受损的凭据
  • 包括密码强度计
  • 禁止常见和以前违反的密码

在设置密码的最大允许长度时,您需要牢记建议中的两个要点;您为密码设置的限制,并且不截断用户输入。

您应该为最大密码长度设置的最小值应该足够高(至少为100),以便使用密码管理器的任何人都不可能长时间生成密码。

如果将密码的最大长度设置为100个字符,则每个密码字段应允许您键入至少101个字符。这意味着如果用户使用密码管理器生成200个字符的密码,则密码设置页面有可能通知用户他们输入了太多字符,并且需要输入更少的字符。

因此,请为您正在处理的新项目设置密码最大长度,找出如何安全地将其添加到现有系统中,如果您想了解如何安全地增加低密码限制,请继续关注你可能已经拥有了。

资讯来源:由0x资讯编译自DEV,原文:https://dev.to/mitchpommers/password-max-length-limits-are-dumb-but-we-need-them-1dpp ,版权归作者所有,未经许可,不得转载
你可能还喜欢