增加Django登录安全性和密码强度

时间:2018-05-07 20:30:26

标签: django django-authentication

当我创建Django超级用户时,如果我尝试添加弱密码,Django不允许我这样做,但对于普通用户,管理员或使用注册表单,我可以添加非常简单的密码。

  1. 如何将超级用户创建的密码验证广告给所有用户?
  2. 可以限制登录不良尝试次数(我更喜欢没有第三方)

1 个答案:

答案 0 :(得分:2)

当创建用户或超级用户时,两者都使用相同的Django配置设置AUTH_PASSWORD_VALIDATORS,如果保持不变,它将包含一个验证器列表,所有密码将在通过Django admin创建用户时验证。 如果您想要更难,也可以通过添加更多验证器来加强验证器,或者如果您想要更加宽松,可以添加更多验证器。

但是,如果您通过管理命令create_usercreate_superuser创建用户,则此验证程序列表将不适用。这是因为Django假设只有开发人员在这个级别与Django进行交互。

对于你的第二个问题,Django没有内置支持登录尝试和阻止进一步登录的内容。这可能来自第三方应用程序,例如django-defender或来自自己的实现。

该实施的主要内容是

  1. 添加一个存储尝试次数的新表机制

  2. 在settings.py LOGIN_ATTEMPTS = 3

  3. 中添加新设置
  4. 覆盖您在其中检查此表格以进行尝试的用户的登录流程
  5. 如果失败尝试增加计数器,如果成功重置计数器。
  6. 如果用户达到了尝试次数限制,请将用户is_active设置为False,并始终从False覆盖中返回login