Passwords 如果用户';密码是否仅限于特定的字符集或强度?

Passwords 如果用户';密码是否仅限于特定的字符集或强度?,passwords,Passwords,刚刚完成我的注册/登录/注销等。。。输入我的网站的功能,我很好奇。是否应该强制用户使用符合特定强度或字符集的密码 示例一,强制他们使用长度大于8的字母数字密码 示例二,仅允许他们使用字母数字字符和一些特殊字符(即:!@$%) 第一个例子显然是在银行等敏感网站上实施的一件好事,但我想不出一个好的理由来限制用户的密码字符。只要为sql注入清理了字符串,它们使用什么字符就不重要了,对吗 编辑 当然,密码正在被散列请不要告诉我密码中不能使用的字符 除了ASCII控制字符(\0–\0x20)之外,您应该支

刚刚完成我的注册/登录/注销等。。。输入我的网站的功能,我很好奇。是否应该强制用户使用符合特定强度或字符集的密码

示例一,强制他们使用长度大于8的字母数字密码

示例二,仅允许他们使用字母数字字符和一些特殊字符(即:!@$%)

第一个例子显然是在银行等敏感网站上实施的一件好事,但我想不出一个好的理由来限制用户的密码字符。只要为sql注入清理了字符串,它们使用什么字符就不重要了,对吗

编辑

当然,密码正在被散列

请不要告诉我密码中不能使用的字符

除了ASCII控制字符(
\0
\0x20
)之外,您应该支持密码中的所有Unicode代码点

您有责任确保任何普通字符都可以在密码中使用,包括空格、引号和反斜杠

密码不易受到SQL注入的攻击,因为数据库决不能看到实际密码。在密码接近数据库之前,您应该先对密码进行散列和加密。(使用bcrypt)


最低复杂性要求是一把双刃剑。如果您需要的密码太复杂,用户记不住,他们最终会把它写在某个地方,甚至可能写在手边的某个地方。

至少,您应该需要6个字符和至少两个
A-Z
A-Z
0-9
,或者任何其他字符。

SQL注入应该并不重要:您应该在它到达DB之前对它进行哈希运算。确实没有理由限制字符集。

一些银行网站只限制密码号码,因此用户可以通过拨号板输入电话交易的密码。但就个人而言,我不喜欢限制字符集,因为我使用的是站点密码生成器。至少,检查用户提交的密码是否与前100个密码一致。我建议强制使用特殊字符,但这取决于你建立的网站类型和你需要的进入壁垒。安全性并不容易,但有时是必要的。我对安全哈希的强调不仅针对您,也针对所有遇到此问题的人。仍然有太多(阅读:
>1
)的网站在被要求时向用户发送他们的实际密码。@Slaks-让我们承认,登录的复杂性通常与登录和使用服务的方便性直接相关,这意味着安全性通常不是最重要的(甚至是最重要的)优先权。我一直认为,与强制使用难以记住的密码相比,简单的登录和即时文本通知用户帐户登录提供了更多的安全性没有特殊字符?Tsk,Tsk!:P@Jared当前位置我说这是最低限度。在设定实际的最小值之前,你应该考虑你所涉及的风险,以及你的用户的复杂程度。我知道很多人会抱怨,请注意我上面的评论。