Php 密码强度模式

Php 密码强度模式,php,passwords,design-patterns,Php,Passwords,Design Patterns,我应该使用像a-zA-Z0-9这样的密码模式,并且在密码中至少需要每个字符类中的一个,还是只允许密码中的任何内容 站点允许用户使用什么作为其密码?还有什么我需要考虑的吗? A-SZ-Z-9是非常有限的。您应该允许我使用任何字符,并强制执行最低要求(即至少8个字符、至少一个字母和一个数字)a-ZA-Z0-9过于有限。您应该允许我使用任何字符,并强制执行最低要求(即至少8个字符、至少一个字母和一个数字)用户应能使用的内容不应受到限制。因为在存储密码之前,您会对密码进行哈希运算(我希望),所以密码包含

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


站点允许用户使用什么作为其密码?还有什么我需要考虑的吗?

A-SZ-Z-9是非常有限的。您应该允许我使用任何字符,并强制执行最低要求(即至少8个字符、至少一个字母和一个数字)

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

用户应能使用的内容不应受到限制。因为在存储密码之前,您会对密码进行哈希运算(我希望),所以密码包含的内容不会有任何区别


如果您设置了需求,那么它们应该是最低需求。

用户应该能够使用的内容应该没有限制。因为在存储密码之前,您会对密码进行哈希运算(我希望),所以密码包含的内容不会有任何区别


如果设置要求,则应为最低要求。

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


至少一个数字、至少一个小写、至少一个大写、至少一个符号(*/%…)

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


至少一个数字、至少一个小写、至少一个大写、至少一个符号(*/%…)

密码正则表达式模式

((?=.*\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
相关的:


密码正则表达式模式

((?=.*\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
相关的:

密码熵 检验一个好密码的标准不是所表示的字符集的数量,而是熵

熵测试:Dropbox的人已经把这个神奇的工具放在一起,这个工具就是用来测试熵的。我强烈推荐阅读他们的文章

简要说明:字符类(小写、大写、数字和特殊字符)和长度都很重要,因为它们一起提高了密码熵(虽然长度比字符类快得多),但用户倾向于使用可预测的模式,从而降低了熵

这可能是一种幽默,但它有助于说明问题的一部分:

密码熵 检验一个好密码的标准不是所表示的字符集的数量,而是熵

熵测试:Dropbox的人已经把这个神奇的工具放在一起,这个工具就是用来测试熵的。我强烈推荐阅读他们的文章

简要说明:字符类(小写、大写、数字和特殊字符)和长度都很重要,因为它们一起提高了密码熵(虽然长度比字符类快得多),但用户倾向于使用可预测的模式,从而降低了熵

这可能是一种幽默,但它有助于说明问题的一部分:

别担心,误读了这个问题-密码是用来干什么的?你希望拥有什么样的用户?应设置密码要求,以便为使用密码的人员提供最佳服务。例如,我希望对网上银行网站的限制比论坛要高很多。我希望能够使用像
俎–#这样的密码@#∑åß∂-不要将其标记为不安全,因为它没有
a-zA-Z0-9
。用正则表达式行话说:
'/^[a-zA-Z][a-zA-Z0-9.@$%^&*()]{10,25}$/'
您可以让用户创建一个密码,该密码以字母表中的字母开头,后跟一些可接受的字符,然后要求最少10个字符,最多25个字符。我想我会这么做:至少6个字符,1个大写字母,1个小写字母和1个数字。我想这些要求都可以。别担心,误读了这个问题-密码是用来干什么的?你希望拥有什么样的用户?应设置密码要求,以便为使用密码的人员提供最佳服务。例如,我希望对网上银行网站的限制比论坛要高很多。我希望能够使用像
俎–#这样的密码@#∑åß∂-不要将其标记为不安全,因为它没有
a-zA-Z0-9
。用正则表达式行话说:
'/^[a-zA-Z][a-zA-Z0-9.@$%^&*()]{10,25}$/'
您可以让用户创建一个密码,该密码以字母表中的字母开头,后跟一些可接受的字符,然后要求最少10个字符,最多25个字符。我想我会这样做:至少6个字符,1个大写字母,1个小写字母和1个数字。我认为这些要求可以。@Iarsmans我通常会包括标点符号要求,是的,但是如果他提议的a-zA-Z0-9对他的客户来说可能太严格了。@Iarsmans我通常会包括标点符号要求,是的,但是如果他提议的a-zA-Z0-9对他的客户来说可能太严格了。我认为这些不能被视为全球要求。不同的用例需要不同的最低要求。我不认为这些可以被视为全局要求。不同的用例要求不同的最低要求。请永远不要强制执行最大密码长度。请永远不要强制执行最大密码长度。