刚刚完成我的注册/登录/注销等...我的网站的类型功能,我很好奇。用户是否应该被迫拥有符合特定强度或字符集的密码?
示例一,强制他们使用长度为>的字母数字密码; 8
示例二,只允许他们使用字母数字字符和一些特殊字符(即:!@#$%)。
第一个例子显然是在像银行这样的敏感网站上执行的一件好事,但我想不出限制用户密码字符的好理由。只要为sql注入清理字符串,它们使用字符的权利应该无关紧要吗?
修改
当然密码是HASHED
答案 0 :(得分:3)
请 ,不要告诉我在密码中不能使用哪些字符。
您应该支持密码中的所有Unicode代码点,但ASCII控制字符可能例外(\0
- \0x20
)。
您有责任确保任何普通字符都可以使用密码,包括空格,引号和反斜杠。
密码不容易受到SQL注入攻击,因为数据库绝不能看到实际密码。您应该在密码到达数据库附近之前对密码进行哈希和加密。 (使用bcrypt)
最低复杂性要求是一把双刃剑。如果您需要的密码太复杂而无法让用户记住,他们最终会将密码写在某个地方,也可能就在附近。
至少,您应该要求6个字符,并且至少有两个A-Z
,a-z
,0-9
或任何其他字符。
答案 1 :(得分:1)
SQL注入并不重要:您应该在它到达数据库之前对其进行哈希处理。没有理由限制字符集。