密码需要特殊字符vs密码可选特殊字符

问题描述 投票:2回答:2

为什么要求密码具有特殊字符,大写和小写字母以及数字,为什么它被认为更安全?allow而不是要求这些字符会更安全吗?

假设有人想破坏密码,如果他们已经知道该密码包含至少1个特殊字符,1个大写和小写字母以及1个数字(因为必须输入),对他们来说会不会更容易。如果允许而不是要求密码,则密码不能包含这些字符吗?

security passwords password-protection
2个回答
3
投票

[它被认为是安全的,免受字典攻击等多种攻击。由于字典攻击来自具有常用词的词表。如果密码符合标准,最好在前端和后端要求这些规则并进行验证。

在开发中,您可以使用位于以下位置的OWASP ASVS:https://github.com/OWASP/ASVS/blob/master/4.0/en/0x11-V2-Authentication.md

有一个清单,如:

  1. 验证用户设置的密码长度至少为12个字符。
  2. 验证是否提供了密码强度计以帮助用户设置更强的密码。

如果您遵循OWASP之类的标准,则确保身份验证会很好。


0
投票

允许而不是要求使用这些字符会更安全吗?

是和否

No:正如弗朗西斯·阿尔·维多诺(Francis Al Victoriano)所说,它对打击字典攻击非常有用。

是:

在理想环境中,除了密码不是空白之外,您不需要任何其他要求。就像您说的那样,攻击者没有任何暗示可以包含什么密码,甚至都不知道应该在多长的时间内开始蛮力。

但是在这个完美的世界中,您的用户知道他们在做什么,他们知道什么是强密码,并且在每个应用程序中都使用一个。可悲的是,在现实世界中,您永远不应信任用户,因此必须确保他们选择的密码不是“太弱”。

因此,我们应该强制用户在密码中包含多个字符集吗?

有人说应该这样做,因为如果我们不这样做,用户将选择像字典单词这样的弱密码。有人说我们不应该(例如NIST),因为:

  • 您在密码策略中添加的限制越多,用户就会越被它烦恼(他已经因必须使用密码这一事实而烦恼),并且他越会尝试绕过它,并且很可能会削弱它在此过程中输入的密码(例如,您的超级复杂密码将在便利贴上结束,因为用户无法记住该密码)。
  • 说到旁路,典型的密码策略是至少8个字符,至少一个大写,一个小写,一位数字和一个特殊字符。您在这里:P@ssw0rdLet's check if Have I Been Pwned thinks it is a good password,扰流板警报:否
  • 它防止用户选择密码。
  • 我对此事的遵循是NIST准则:

  1. 最小长度为12个字符
  2. 基于最新的泄露密码列表(例如HIBP)和离线强度估算器(例如zxcvbn)来帮助用户避免使用弱密码的密码强度计
  3. ((可选)服务器端密码强度验证(基于步骤2的两个组件),如果您要确保用户选择的是强密码,并且您不想或不能允许他忽略密码强度表,请执行以下操作。
© www.soinside.com 2019 - 2024. All rights reserved.