为什么要求密码具有特殊字符,大写和小写字母以及数字,为什么它被认为更安全?allow而不是要求这些字符会更安全吗?
假设有人想破坏密码,如果他们已经知道该密码包含至少1个特殊字符,1个大写和小写字母以及1个数字(因为必须输入),对他们来说会不会更容易。如果允许而不是要求密码,则密码不能包含这些字符吗?
[它被认为是安全的,免受字典攻击等多种攻击。由于字典攻击来自具有常用词的词表。如果密码符合标准,最好在前端和后端要求这些规则并进行验证。
在开发中,您可以使用位于以下位置的OWASP ASVS:https://github.com/OWASP/ASVS/blob/master/4.0/en/0x11-V2-Authentication.md
有一个清单,如:
如果您遵循OWASP之类的标准,则确保身份验证会很好。
允许而不是要求使用这些字符会更安全吗?
是和否
No:正如弗朗西斯·阿尔·维多诺(Francis Al Victoriano)所说,它对打击字典攻击非常有用。
是:
在理想环境中,除了密码不是空白之外,您不需要任何其他要求。就像您说的那样,攻击者没有任何暗示可以包含什么密码,甚至都不知道应该在多长的时间内开始蛮力。但是在这个完美的世界中,您的用户知道他们在做什么,他们知道什么是强密码,并且在每个应用程序中都使用一个。可悲的是,在现实世界中,您永远不应信任用户,因此必须确保他们选择的密码不是“太弱”。
因此,我们应该强制用户在密码中包含多个字符集吗?
有人说应该这样做,因为如果我们不这样做,用户将选择像字典单词这样的弱密码。有人说我们不应该(例如NIST),因为:
P@ssw0rd
。 Let's check if Have I Been Pwned thinks it is a good password,扰流板警报:否我对此事的遵循是NIST准则: