密码中应该允许空格字符吗?

11

我尝试了不同的网站/产品,似乎情况相当平均。Windows 7和Gmail允许您在密码中插入空格。Hotmail和Twitter则不允许。

虽然在密码中允许使用空格可以增加密码的复杂性,但似乎许多网站/程序不允许使用它们。是否有允许/禁止使用空格的充分理由?


空格可能使使用这个xkcd漫画中的短语更容易:https://xkcd.com/936/,尽管您也可以轻松地使用没有空格的短语。 - User
还有一个相关的问题在这里:http://security.stackexchange.com/questions/32691/why-not-allow-spaces-in-a-password - User
3个回答

7

这个SuperUser问题可能与您有关。

我认为您的观察是准确的:许多基于web的系统仅接受字母数字和一些特殊字符(比如0-9A-Za-z/_-!),但我认为这只是历史惯例。程序员习惯于使用<space>字符分隔字段,而不是在字段中找到它们。

还有可见性的问题:如果允许在密码中使用多个连续的空格,用户可以轻易地计数吗?一个系统是否会将它们合并成一个(就像未辅助的HTML一样)?甚至单个空格字符是否可以轻松快速地识别?

然而,许多其他类型的系统确实允许密码中有空格。我可能仍会远离它们,只是为了帮助防止用户混淆(如果人们确实习惯于密码中没有空格,则带有空格的密码可能会让很多人感到困惑),但似乎没有任何技术上的理由不允许它们。


0

我看到的主要问题是用户的可用性,例如尾随空格。此外,如果您开始允许像空格这样的非可见字符,您可能还会开始允许各种其他非可见字符,如制表符等。在我看来,缺点大于优点。要使密码真正安全,只需增加长度并允许一些特殊字符、数字和字母,并具体区分大小写。例如,超过20位数字在这个阶段几乎是无法破解的(至少在值得努力方面..)。


我不同意“几乎无法破解”的说法。20个字符大约是160位(通常情况下),并且如果只允许使用字符的子集,则包含的信息位数更少。这对于超级计算机来说并不需要花费太长时间就能被破解。我想这主要取决于具体的应用场景。 - Lightness Races in Orbit
20个字符对于一台超级计算机来说仍然是一个挑战。这完全取决于实际情况下的“微小时刻”有多短! - Rory Alsop
我是在谈论实际上的金钱问题。如果你有一台超级计算机来破解密码,并且可以运行几个小时,那么这个密码最好非常重要。 - Manfred Moser
1
空格和制表符都是可见字符。如果您使用密码管理器(正如您应该这样做),那么您只需复制粘贴密码,然后任何字符都可以。任何字符都一样好。 - Sámal Rasmussen

0

这里有一个快速测试密码强度的方法——使用谷歌自己的账户密码 API:

https://www.google.com/accounts/RatePassword?Passwd=mypwd

根据您关于空格的问题,我输入了一个包含两个字符和一个空格“t t”的简单密码。谷歌给出了该密码的评分为4分中的3分。如果我使用相同的密码,但去掉空格“tt”,则得到的评分为4分中的1分。按照谷歌的评分标准,包括空格可以提高密码的质量/强度。

增强了程序的稳定性,但可能会破坏应用程序——空格通常用于分隔参数。 - Rory Alsop
2
强度并不完全关乎于是否应该允许它们的问题。 - Lightness Races in Orbit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接