我尝试了不同的网站/产品,似乎情况相当平均。Windows 7和Gmail允许您在密码中插入空格。Hotmail和Twitter则不允许。
虽然在密码中允许使用空格可以增加密码的复杂性,但似乎许多网站/程序不允许使用它们。是否有允许/禁止使用空格的充分理由?
我尝试了不同的网站/产品,似乎情况相当平均。Windows 7和Gmail允许您在密码中插入空格。Hotmail和Twitter则不允许。
虽然在密码中允许使用空格可以增加密码的复杂性,但似乎许多网站/程序不允许使用它们。是否有允许/禁止使用空格的充分理由?
这个SuperUser问题可能与您有关。
我认为您的观察是准确的:许多基于web的系统仅接受字母数字和一些特殊字符(比如0-9A-Za-z/_-!
),但我认为这只是历史惯例。程序员习惯于使用<space>
字符分隔字段,而不是在字段中找到它们。
还有可见性的问题:如果允许在密码中使用多个连续的空格,用户可以轻易地计数吗?一个系统是否会将它们合并成一个(就像未辅助的HTML一样)?甚至单个空格字符是否可以轻松快速地识别?
然而,许多其他类型的系统确实允许密码中有空格。我可能仍会远离它们,只是为了帮助防止用户混淆(如果人们确实习惯于密码中没有空格,则带有空格的密码可能会让很多人感到困惑),但似乎没有任何技术上的理由不允许它们。
我看到的主要问题是用户的可用性,例如尾随空格。此外,如果您开始允许像空格这样的非可见字符,您可能还会开始允许各种其他非可见字符,如制表符等。在我看来,缺点大于优点。要使密码真正安全,只需增加长度并允许一些特殊字符、数字和字母,并具体区分大小写。例如,超过20位数字在这个阶段几乎是无法破解的(至少在值得努力方面..)。
这里有一个快速测试密码强度的方法——使用谷歌自己的账户密码 API:
根据您关于空格的问题,我输入了一个包含两个字符和一个空格“t t”的简单密码。谷歌给出了该密码的评分为4分中的3分。如果我使用相同的密码,但去掉空格“tt”,则得到的评分为4分中的1分。按照谷歌的评分标准,包括空格可以提高密码的质量/强度。