增加 Django 登录安全性和密码强度
Increasing Django login security and password strengths
当我创建 Django 超级用户时,如果我尝试添加一个弱密码 Django 不允许我,但对于普通用户,在管理员中,或使用注册表单我可以添加非常简单的密码。
- 如何将创建超级用户的密码验证通知给所有用户?
- 能否限制登录失败次数(我更喜欢没有第三方)
创建用户或超级用户时都使用相同的 Django 配置设置 AUTH_PASSWORD_VALIDATORS
,如果不进行修改,它将包含一个验证器列表,在通过 Django 管理创建用户时,所有密码都将根据这些验证器进行验证。
这也是您加强验证器的地方,如果您想要更严格,可以添加更多,如果您想要更宽松,可以删除。
但是,如果您通过管理命令 create_user
和 create_superuser
创建用户,则此验证器列表将不适用。这是因为 Django 假定只有开发人员在这个级别与 Django 交互。
对于你的第二个问题,Django 没有内置支持登录尝试和后续阻止进一步登录的内容。这是来自第 3 方应用程序(例如 django-defender 或来自自己的实现)的内容。
该实施的主要内容是
添加一个新的table存储尝试次数的机制
在 settings.py 添加新设置 LOGIN_ATTEMPTS = 3
- 覆盖您检查此 table 尝试
的用户的登录流程
- 如果尝试增加计数器失败,如果成功则重置计数器。
- 如果用户达到尝试次数限制,请将用户
is_active
设置为 False
并始终从您的 login
覆盖中设置 return False
。
当我创建 Django 超级用户时,如果我尝试添加一个弱密码 Django 不允许我,但对于普通用户,在管理员中,或使用注册表单我可以添加非常简单的密码。
- 如何将创建超级用户的密码验证通知给所有用户?
- 能否限制登录失败次数(我更喜欢没有第三方)
创建用户或超级用户时都使用相同的 Django 配置设置 AUTH_PASSWORD_VALIDATORS
,如果不进行修改,它将包含一个验证器列表,在通过 Django 管理创建用户时,所有密码都将根据这些验证器进行验证。
这也是您加强验证器的地方,如果您想要更严格,可以添加更多,如果您想要更宽松,可以删除。
但是,如果您通过管理命令 create_user
和 create_superuser
创建用户,则此验证器列表将不适用。这是因为 Django 假定只有开发人员在这个级别与 Django 交互。
对于你的第二个问题,Django 没有内置支持登录尝试和后续阻止进一步登录的内容。这是来自第 3 方应用程序(例如 django-defender 或来自自己的实现)的内容。
该实施的主要内容是
添加一个新的table存储尝试次数的机制
在 settings.py 添加新设置
LOGIN_ATTEMPTS = 3
- 覆盖您检查此 table 尝试 的用户的登录流程
- 如果尝试增加计数器失败,如果成功则重置计数器。
- 如果用户达到尝试次数限制,请将用户
is_active
设置为False
并始终从您的login
覆盖中设置 returnFalse
。