没有考虑它我只想说我应该允许每个角色.它在任何情况下都会被哈希,我不想限制想要创建强密码的人.
然而,考虑更多,有很多人物,我不知道他们对事物有什么影响.外来字符,ascii符号等等.
我试图谷歌,但我找不到任何人的确切标准.甚至大多数专业组织似乎都不知道.对于许多网站而言,完全不允许使用特殊字符似乎是一种常见做法,这只是愚蠢而不是我想做的事情.
无论如何,对长度,允许的角色等有任何标准建议吗?
我不确定它是否重要,但我将使用ASP.NET w/C#
密码中通常允许使用任何可打印的非空白ASCII字符(介于33和126之间).许多安全专业人员(和SO评论者)建议使用密码来代替密码,因此您必须允许空格.争论的焦点是由于它们的长度,并且因为短语不在字典中,所以密码短语比密码更难破解.(密码也可以更容易记住,因此合法用户不必将其记录在显示器右侧的便利贴上.)
一些强大的密码生成器使用散列,所以我对长度(512或1024)设置了非常高的限制,只是为了包容.今天的密码生成器通常会产生32-128个字符的字符串,但谁知道未来几年将使用什么样的哈希值.
当在有限的设备(手机,游戏机等)上输入密码时,非ASCII字符肯定会使事情变得更难 - 但通常并非不可能.可以说,如果用户想要这样做,你应该让他们.这很容易做一个合理和一致的事情 - 例如,在散列之前用UTF-8编码.如果某些输入设备将字符作为一个组合发送(例如e +急性重音而非"急性"),你只会遇到困难 - 但我怀疑在现实生活中不会发生这种情况.(你可以自己分解一切,但要找到边缘案例会有很多麻烦.)
但是,我将它限制为可打印字符.将标签,表格输入等放入密码确实是在寻找麻烦.