passwords - 用户的密码是否应该限制为特定的字符集或强度?

标签 passwords

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

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

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

第一个示例显然是在银行等敏感站点上强制执行的一件好事,但我想不出限制用户密码字符的好理由。只要字符串被清理以进行 SQL 注入(inject),他们使用什么字符就不重要了,对吗?

编辑

当然,密码正在被哈希处理

最佳答案

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

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

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

密码不会容易受到 SQL 注入(inject)的攻击,因为数据库决不能看到实际的密码。您应该在密码接近数据库之前对其进行哈希和加盐处理。 (使用bcrypt)

<小时/>

最低复杂性要求是一把双刃剑。如果您需要的密码对于用户来说太复杂而难以记住,他们最终会将其写在某个地方,并且可能是在手边的某个地方。
至少,您应该需要 6 个字符以及至少两个 A-Za-z0-9 或任何其他字符。

关于passwords - 用户的密码是否应该限制为特定的字符集或强度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6811090/

相关文章:

linux - 你如何管理服务器的根密码

django - 如何重置 Django 管理员密码?

javascript - Angularjs 1.30 密码验证。验证确认密码匹配

c# - 将散列密码存储为 UTF8 字符串的含义?

passwords - 允许 TFS 210 用户更改其密码

postgresql - 有没有 pg_shadow 显示密码的原因,但日志显示没有分配密码?

iphone - 如何在 iPhone 应用程序中实现密码恢复?

c - 无论如何,是否可以使用odium.h 生成字符空间(32) 到~(126) ?或者其他生成安全字符串的方法?

java - 如何使用数组创建密码和 ID 的 GUI java

php - 什么函数返回 Drupal-6-valid 密码散列?