【发布时间】:2012-01-16 01:21:40
【问题描述】:
我正在编写一个 php 脚本,我想知道是否应该在用户密码中允许空格。我正在使用sha1() 对密码进行哈希处理,而且它似乎可以很好地处理包含空格的密码。但是,我注意到许多主要网站不允许密码包含空格。这是有原因的还是允许他们这样做?
【问题讨论】:
-
拒绝空格没有实际的安全理由。这个限制是几十年前写得不好的系统的一个毫无意义的遗产,只会阻止人们使用更容易记住的密码短语。让人们随心所欲地使用。
-
你应该允许空格。您还应该允许 -- 真正鼓励 -- 使用密码短语。你可以享受this xkcd。哦,请使用 bcrypt 或 scrypt,或者更好的是,使用可以完成所有工作的现有库。 (普通的 sha1 不足以提供密码,而且太容易暴力破解。)
-
别忘了给这些密码加盐!
-
当我指出这样做是可以的(事实上,preferable)时,根据我通常从各家公司得到的回复,我认为可以安全地假设他们这样做的原因是惹恼他们的用户。
-
@JonathanNewmuis GMX 和 cPanel 是两个不允许密码包含空格的“主要网站”示例。