为什么这么多网站不允许在密码中使用非字母数字字符?

时间:2009-08-05 18:11:07

标签: security passwords

在进行注册时,很多网站都会禁止在密码中使用符号。由于我在所有密码中都包含多个符号,并且作为不时处理Web身份验证的程序员,我无法弄清楚为什么不允许这样做,这从可用性角度推动了我。我错过了什么吗?他们是否担心SQL注入?不想处理逃避字符?或者是否存在非拉丁字母字符可以搞砸的东西?

类似的问题,关于限制长度here的网站。

11 个答案:

答案 0 :(得分:17)

  1. 懒惰,2。使用不支持这些字符的遗留系统进行身份验证

答案 1 :(得分:13)

  1. 他们是白痴
  2. 他们几乎肯定会存储明文密码somehwere(见1)

答案 2 :(得分:9)

他们不在美国:在欧洲,你每隔几英里就有一个不同的键盘。祝你在意大利键盘上找到你的特殊角色祝你好运。或者是希腊人。或土耳其语。

可能存在的唯一键是字母数字键,大多数人都可以找到他们的方式,即使有几个键将被交换(例如Y和Z)。

最后,人们在记住密码时出了名。强迫他们使用“蜂蜜”代替“jh(/& DFA93475”)大大降低了支持率(“我记不起我的密码......”)

如果它是一个网络应用程序,开发人员真的无法确保变音符号从表单转移到后端。如果所有浏览器都只是发送UTF-8,那将会很棒,但是如果没有经过一些仔细的调整,大多数后端都无法处理UTF-8。

答案 3 :(得分:6)

这可能意味着他们很懒或不聪明。如果只存储哈希,则不必担心字符集,注入或空格。几乎就是你提出的其他问题所解释的内容。

答案 4 :(得分:5)

我们的系统曾经不得不与通过触摸屏操作的第三方硬件协同工作。他们的屏幕错误....'键盘',肯定没有非字母数字字符,因此 - 我们遇到了严重的密码问题 - 客户不得不改变它们。

答案 5 :(得分:4)

传统系统支持

我不能说对于许多网站是否属实,但在许多使用半径或其他形式的集中身份验证的过时网络环境中,通常您必须将密码限制为所有不同系统的最低公分母你支持。因此,如果您支持对编写不良的遗留应用程序进行密码身份验证,该应用程序存在非ascii字符问题并且服务器捎带到中央身份验证服务器上,则您必须将所有其他服务器限制为相同的密码限制。

输入验证不良和缺少密码哈希/加密

过去,应用程序可能有SQL注入问题,过度狂热的程序员只是禁用所有ascii,而不是解决他们设计中的根本缺陷。

不需要的简化

开发人员可能希望最大限度地减少二进制数据与密码存储区相关的问题,并且在数据验证方面过于热心。老实说,我认为这是最可能出现的情况。程序员可能已经采用了ascii-only方法来处理用户名,只是将相同思路扩展到密码。

答案 6 :(得分:2)

糟糕的编程,以及它们以明文形式存储的事实,我敢肯定。

答案 7 :(得分:2)

一个可能的原因:网站的用户界面是由营销类型或非技术产品经理设计的。有些人不了解组合,并认为他们实际上通过规定密码字段必须包含8个字母数字字符来为开发人员提供精确的要求。

答案 8 :(得分:2)

可能需要通过电话键盘输入相同的密码(1 = 1,A,B或C)。

意识到这是非常不安全的,提高安全性的一种方法是在X密码尝试失败后锁定帐户。银行网站通常只是一个可怕的旧大型机应用程序的前端,无法更改密码策略。

答案 9 :(得分:2)

他们需要字母数字的原因通常是在输入密码时阻止SQL注入。例如:

在某些网站上,您实际可以输入: 你:管理员 P:'或't'='t

通常程序员通过使用参数化SQL等编程实践来解决这个问题,但我愿意打赌这就是他们这样做的原因。

答案 10 :(得分:1)

这是一个脚趾嘎吱嘎吱,磨牙问题,特别是当银行这样做时;但是,我认为有些问题与';'有关。和''''字符。

当天回来的时候,我怀疑一些程序员强迫使用字母数字字符,人们可能会轻易忘记密码。