用户的密码是否应限于特定的字符集或强度?

时间:2011-07-25 01:47:26

标签: passwords

刚刚完成我的注册/登录/注销等...我的网站的类型功能,我很好奇。用户是否应该被迫拥有符合特定强度或字符集的密码?

示例一,强制他们使用长度为>的字母数字密码; 8

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

第一个例子显然是在像银行这样的敏感网站上执行的一件好事,但我想不出限制用户密码字符的好理由。只要为sql注入清理字符串,它们使用字符的权利应该无关紧要吗?

修改

当然密码是HASHED

2 个答案:

答案 0 :(得分:3)

,不要告诉我在密码中不能使用哪些字符。

您应该支持密码中的所有Unicode代码点,但ASCII控制字符可能例外(\0 - \0x20)。

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

密码不容易受到SQL注入攻击,因为数据库绝不能看到实际密码。您应该在密码到达数据库附近之前对密码进行哈希和加密。 (使用bcrypt)


最低复杂性要求是一把双刃剑。如果您需要的密码太复杂而无法让用户记住,他们最终会将密码写在某个地方,也可能就在附近。 至少,您应该要求6个字符,并且至少有两个A-Za-z0-9或任何其他字符。

答案 1 :(得分:1)

SQL注入并不重要:您应该在它到达数据库之前对其进行哈希处理。没有理由限制字符集。