我只是想知道为什么某些网站在密码字段中不允许任何字母和数字以外的任何内容。
是否有安全原因或者它只是对他们使用的数据库的限制?感谢您的信息。
编辑:Oracle的数据库似乎不承认大写和小写?这是真的?我被告知通过PM。感谢信息人员,这非常有用。
我想知道为什么这个问题有3票可以结束。没有足够的jQuery和写意圈?
答案 0 :(得分:21)
他们脑死亡并且一般都害怕标点符号 - 而点数就像标点符号一样。它更像是一种“友好之火”,而不是点危险。短跑也非常无害。
其中一个问题是SQL Injection,当然。另一个是编程人员的能力。
答案 1 :(得分:11)
我在一个希望能够通过电话读取密码的地方工作(这就是支持的方式)。支持人们不知道符号的所有名称(哈希,爆炸,管道,&符号和星号/星号)和其他问题(你的意思是左括号,引用等)。所以他们不允许任何标点符号。
不是一个很好的理由(支持不应该知道我的密码),但你没有要求只有充分的理由:)
答案 2 :(得分:7)
没有任何理由,除了草率的DB编码,他们将允许DB中的纯文本或使用(非可移植)DB函数来散列密码并使用直接SQL语句。 这看起来就像普通的字符串验证。
除此之外,在实际方面,在外国或狭窄键盘中的特殊字符放置是棘手的,并且对于正在旅行的用户(或在更现代的情况下的替代输入,如智能手机上的屏幕键盘)可能更令人沮丧。 有些网站甚至可能通过提供自己的屏幕键盘来进一步推动系统登录(使用各种加扰)。
禁用特殊字符有助于QA,并减少多平台用户的挫败感。
最后,允许有限(认为安全)的字符集(不仅是标点符号,而且还包括Unicode中更多的语言特定字符),开发人员还可以避免编码浏览器和服务器应用程序之间的混淆(表单数据编码不是在标准中非常清楚,在某些浏览器上可能会很棘手)。
答案 3 :(得分:4)
no 可能的原因。他们只是无能。任何关于SQL注入或其他任何问题的担忧都是错误的。这只是告诉你他们担心可能的安全注入,因为他们没有散列或加密你的密码。
答案 4 :(得分:1)
关于大写/小写:如果您以纯文本格式存储密码,那么这可能是个问题。我不确定Oracle,但是SqlServer认为'Password'和'passWORD'是相同的。
如果您将密码存储为哈希,那么原件的外壳不是问题:密码区分大小写。
答案 5 :(得分:1)
OWASP在这个问题上非常明确。它在OWASP Passwood Storage Cheat Sheet中的第一条指导是:
不限制字符集并为凭据设置长的最大长度 一些组织限制1)特殊字符的类型和2)系统接受的凭证长度,因为它们无法阻止SQL注入,跨站点脚本,命令注入和其他形式的注入攻击。这些限制虽然是善意的,但也可以促进某些简单的攻击,例如蛮力。
不允许短密码或不长密码,也不对凭证的输入或存储应用字符集或编码限制。继续应用编码,转义,屏蔽,彻底省略和其他最佳实践来消除注入风险。
合理的长密码长度为160.在某些情况下,很长的密码策略可能导致DOS 1。
答案 6 :(得分:0)
是不是要避免所有可能的SQL injection?
答案 7 :(得分:-1)
一般来说,将密码限制为数字和字母是一种不好的做法。但是,它确实有助于保护代码免受“代码注入”的影响,其中黑客通过一些指令作为密码的一部分来获取对系统的访问权。像“Apple”这样的密码;“用户删除*”;如果开发人员没有妥善保管用户输入,可能会造成损坏。
另一个问题是使用可能导致站点后面的代码冲突的特殊字符。或者特殊字符,它取决于数据库中使用的特定字符集/编码。像ë,è,ï,î和ì这样的字母都是可以使用的特殊字符,如果允许的话。但他们有时最终会以错误的方式被翻译。
另一个问题是有些人往往容易忘记他们的密码,如果你被允许使用特殊字符,这会变得有点复杂。通过将密码限制为更少的组合,您还可以更容易记住密码
不幸的是,它也使它们更容易破解...
而且这通常只是管理某些公司的政策,而这些公司只是不了解更多。限制可能只是一个管理决策,没有管理层希望密码存储的逻辑解释......