密码强度模式

时间:2012-01-05 16:34:39

标签: php passwords design-patterns

我应该使用像a-zA-Z0-9这样的密码模式,并且还需要密码中的每个字符类中的至少一个,或者只是允许密码内的任何内容?

网站允许用户使用什么作为他/她的密码?还有什么我应该考虑的吗?

5 个答案:

答案 0 :(得分:5)

a-ZA-Z0-9过于有限。您应该让我使用任何字符,并强制执行最低要求(即至少8个字符,至少一个字母和一个数字)

答案 1 :(得分:3)

密码熵

良好密码的测试不是所代表的字符集数量,而是

测试熵: Dropbox的人们已经将这个名为zxcvbn的奇妙工具组合在一起。我强烈建议阅读他们的write-up explaining it here

简要说明:两个字符类(小写,大写,数字和特殊字符)和长度都很重要,因为它们共同提高了密码熵(长度比字符类快得多)但是用户倾向于采用可预测的模式来降低熵。

这可能是幽默,但它有助于说明部分要点: http://xkcd.com/936/ enter image description here

答案 2 :(得分:2)

用户应该能够使用的内容应该没有限制。因为你会在存储之前对密码进行哈希处理(我希望)这对密码包含的内容没有任何影响。

如果您设定要求,则应该是最低要求。

答案 3 :(得分:1)

密码正则表达式

((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,20})

击穿

(                       # Start of group
  (?=.*\d)              #   must contains one digit from 0-9
  (?=.*[a-z])           #   must contains one lowercase characters
  (?=.*[A-Z])           #   must contains one uppercase characters
  (?=.*[@#$%])          #   must contains one special symbols in the list "@#$%"
              .         #     match anything with previous condition checking
                {6,20}  #        length at least 6 characters and maximum of 20 
)                       # End of group

相关:

答案 4 :(得分:-1)

最少8个字符,最好是12个字符

至少一个数字,至少一个小写字母,至少一个大写字母,至少一个符号(* /%...)