刚刚完成我的注册/登录/注销等...我的网站的类型功能,我很好奇。是否应该强制用户使用满足特定强度或字符集的密码?
示例一,强制他们使用长度 > 8 的字母数字密码
示例二,仅允许他们使用字母数字字符和一些特殊字符(即:!@#$%)。
第一个例子显然是在银行等敏感网站上强制执行的一件好事,但我想不出限制用户密码字符的好理由。只要字符串被清理以进行 SQL 注入,他们使用什么字符就不重要了,对吗?
编辑
当然,密码正在被哈希处理
请不要告诉我密码中不能使用哪些字符。
您应该支持密码中的全部 Unicode 代码点,但 ASCII 控制字符 ( \0– \0x20) 可能除外。
您有责任确保任何普通字符都可以在密码中使用,包括空格、引号和反斜杠。
密码不会容易受到 SQL 注入的攻击,因为数据库绝不能看到实际的密码。您应该在密码接近数据库之前对其进行哈希和加盐处理。(使用 bcrypt)
最低复杂性要求是一把双刃剑。如果您需要的密码对于用户来说太复杂而难以记住,他们最终会将其写在某个地方,并且可能是在手边的某个地方。
至少,您应该需要 6 个字符以及至少两个A-Z、a-z、0-9或任何其他字符。