为什么要限制密码的长度?

时间:2009-03-31 18:26:53

标签: database security web-applications passwords

我刚刚注册了一个网站来购买一些商品,当我试图输入我的(相当安全的)密码时,我被告知它太长了,而且我应该在5&之间输入密码。 10个字符!有什么意义呢?谁做出这样的决定?当然,理想的密码将是一个非常漫长而复杂的密码?为什么人们会坚持试图限制您可以使用哪种类型的密码?

您是否必须实施网站登录?是否出于安全目的登录(例如购买商品)。您对用户密码有什么(如果有)限制?你决定的原因是什么?

9 个答案:

答案 0 :(得分:103)

限制密码大小是为了节省存储空间。它几乎表明您的密码正在明确地存储在他们的数据库中,因此他们希望限制其大小。否则它只是一个限制,因为实现者不知道更好。无论哪种方式,这都是一个不好的迹象。

您可能希望与该网站的管理员联系并询问相关信息。它们应该是存储哈希,而不是密码,无论密码有多大,密码总是相同的。确实应该没有限制您输入的密码大小,也不应限制您允许输入的字符域。

答案 1 :(得分:29)

最常见的原因是因为前端集成了一些遗留系统,该系统不能处理超过给定数量的字符。

答案 2 :(得分:3)

似乎特别愚蠢,因为任何一半体面的网站都没有在他们的数据库中存储明文密码,他们存储该密码的单向散列(根据所使用的算法,它总是一个设定的长度,例如sha1是一个160位摘要)然后在登录时重新密码该密码以确保新散列的密码与存储的密码匹配。

除了前端设计美学 - 我同意,强制执行最大密码长度没有任何意义。由于显而易见的原因,最小长度完全不同。

答案 3 :(得分:3)

由于存储空间问题,长度限制可能,但可能是一个非常糟糕的反脚本措施。如果我的银行告诉我我的密码太短而不是太长,我会更自信。每当我被告知我的密码太短,或者不允许“特殊”字符时,我想,“哦,他们一定不能在他们的字典中找到我的密码...... facepalm 。”

应该允许任何字符。应鼓励传递短语,而不是气馁。它们比隐秘的密码更容易记住,更难以破解,因为它们不在查找表中。

答案 4 :(得分:2)

一些(设计糟糕的)网站拥有最大密码长度,原因很简单:这是他们在数据库中存储密码的所有空间。他们很有可能不会对它进行散列或处理它,这意味着它以纯文本形式存储。这样的网站我每次使用一次,丢弃密码。这是一个糟糕的设计,不幸的是人们仍在使用它。

答案 5 :(得分:2)

可能是他们用于加密的算法不适用于大密码,或者他们只有有限的存储空间来存储它。我知道,两者都是非常糟糕的原因,但这是可能的。

如果我要制定密码规则,那么只会保护用户,例如强迫他们使用至少一个特殊字符和数字或混合大小写。

答案 6 :(得分:2)

不区分大小写的10个字符的字母数字密码具有839,299,365,868,340,224种可能的排列。假设可以每秒检查100万次,这将需要几个冰河时代来暴力破解。这对我来说足够安全。

“最佳”原因可能是您可以记住密码。

答案 7 :(得分:1)

可能是因为他们将您的密码存储为纯文本并试图节省空间,但也可能是试图阻止人们将密码设置得很长然后忘记密码,这意味着公司必须发送密码一封带有密码的电子邮件,这有点麻烦。

答案 8 :(得分:0)

以这种方式限制密码的唯一可能原因是简化数据库表,这是一个不好的理由。应该允许冗长,复杂的密码!

此外,该网站根本不应该存储密码,而是存储加密哈希。由于散列是固定大小,这使得数据库非常简单并且存储要求很小。