我是播客“Security Now”的听众,他们经常声称没有理由限制用户在网站上创建帐户时可以在密码中使用的字符数。我从来不明白如何在技术上甚至可以允许无限数量的字符,以及如何不能利用它来创建一种缓冲区溢出。
我在这里找到了一个相关的问题,但我的问题略有不同。另一个问题的作者在他们的描述中明确提到,他们理解为什么将最大长度设置为 100000000 个字符会是一个问题。我实际上想知道为什么会出现问题,是不是就像我刚才说的那样是因为缓冲区溢出?但是要容易受到缓冲区溢出的影响,您不应该首先拥有一种不能超过的边界,因此如果您不限制字符数,您甚至会有这种风险吗?如果您正在考虑耗尽计算机的 RAM 或资源,那么即使是非常大的密码也会成为问题吗?
因此,我想可以不限制密码中的字符数:您所要做的就是不使用 maxlength 属性或在服务器端没有密码验证功能。那会是安全的方法吗?如果是这样,允许无限数量的字符作为密码是否有任何危险?另一方面,NIST建议开发人员至少允许最多 64 个字符的密码。如果他们花时间推荐一个限制,这是否意味着必须有一个?
有人建议这个问题可能与我的问题重复。它不是。另一个问题从密码总是有阈值的前提开始,我只是想知道是否有理由对密码设置阈值。