我正在创建一个webapp,我的认证方法的一部分是密码长度。
我该放一个吗?(比如说,50个字符?)或者我应该设置一个最小长度(目前为6)。
没有最大长度有问题吗?
发布于 2011-08-15 10:51:28
您应该使用使用安全算法散列密码而不是将其存储在明文中。不管输入字符串的长度如何,哈希函数都会产生一个恒定的输出大小。
使用最小长度或者其他一些质量规则是个好主意,因为它有助于防止懒惰。
如果您害怕拒绝服务攻击,您可以为普通输入字段设置服务器端限制,例如1000字节。不太可能有人想要使用这么长的密码。
发布于 2011-08-15 10:50:39
我的建议: 1,024字节。
对密码大小的限制是由于过时的技术要求而存在的限制。现代密码存储应该依赖散列,这使得密码存储字段成为一个固定的大小,而不管密码长度如何。我们不希望看到1mb的密码,因为它只是表示有人试图导致拒绝服务。我想我永远不会看到人类使用1024字符(或更长的)密码。我认为这是一个足够小的价值,足以防止任何真正的DOS和一个很高的价值永远达不到任何合理的情况。
发布于 2011-08-17 09:02:29
这取决于您使用的消息摘要函数。对于大多数人(sha-256,甚至md5,sha1等.)无所谓。但是,如果您使用的是bcrypt,那么bcrypt有一个55字符的限制。所以,如果你的盐是27个字节,你可以有28个字节的密码。
另外,CWE-521确实要求您有一个最大的密码长度。但是,它没有说明最大值,而且从安全性说明中,我看不出它可能是512 K字节或更多的任何原因。
https://security.stackexchange.com/questions/6287
复制相似问题