用户角度
- 用户设置密码时,提示用户不要将生日、手机号、身份证号等常用信息设置为密码
- 在用户设置密码时,不允许设置的密码和用户名相同
- 在用户输入密码时,对密码长度做出限制,比方说最小 8 位。密码不应该是单一一种:密码应该包含数字、字母和符号至少两种,字母区分大小写。
开发者角度
- 服务器端存储密码前 对用户角度的 2 和 3 做校验
- 存储的密码是不可逆的
- 使用 PBKDF2 或者 bcript 加密方式
- 可以设置:当用户输入错误密码次数达到一定次数时,锁定该账户。但是这个地方需要注意,存在:恶意用户通过这种方式去锁定别的用户的情况,请酌情考虑。
推荐两篇文章
[1] http://blog.jobbole.com/61872/#ruby
[2]http://www.unlimitednovelty.com/2012/03/dont-use-bcrypt.html