使用Pwned Passwords API检查受损害密码的Django密码验证器。
项目描述
Django Pwned
一组django密码验证器。
兼容性
- Python: 3.8, 3.9, 3.10, 3.11, 3.12
- Django: 4.2, 5.0
安装
pip install django-pwned
为了使翻译工作,请将django_pwned
添加到INSTALLED_APPS
。
TL;DR
AUTH_PASSWORD_VALIDATORS = [
{"NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator"},
{"NAME": "django_pwned.validators.GitHubLikePasswordValidator"},
{"NAME": "django_pwned.validators.MinimumUniqueCharactersPasswordValidator"},
{"NAME": "django_pwned.validators.PwnedPasswordValidator"},
]
验证器
PwnedPasswordValidator(request_timeout=1.5, count_threshold=1)
此验证器使用Pwned Passwords API来检查受损害的密码。
内部,此验证器使用django的CommonPasswordValidator
检查密码,如果密码不在django的列表中,则使用Pwned API检查密码。因此,如果您使用此验证器,可以删除CommonPasswordValidator
。
AUTH_PASSWORD_VALIDATORS = [
# ...
# {"NAME": "django.contrib.auth.password_validation.CommonPasswordValidator"},
{"NAME": "django_pwned.validators.PwnedPasswordValidator"},
# ...
]
您可以通过request_timeout
参数(以秒为单位)设置API请求超时。
您可以将count_threshold
设置为在Pwned Passwords数据集中出现超过一定次数时拒绝密码。默认情况下,此阈值设置为1
。例如,将count_threshold=2
表示密码在数据集中至少出现两次时将被拒绝。
示例配置
AUTH_PASSWORD_VALIDATORS = [
# ...
{
"NAME": "django_pwned.validators.PwnedPasswordValidator",
"OPTIONS": {
"request_timeout": 2,
"count_threshold": 5,
},
},
# ...
]
如果由于任何原因(连接问题、超时等)请求Pwned API失败,则此验证器将跳过密码检查并记录一条消息。
GitHubLikePasswordValidator(min_length=8, safe_length=15)
验证密码长度是否至少
- 为8个字符,如果包含数字和一个小写字母,或者
- 为15个字符,字符组合不限
基于GitHub关于创建强密码的文档。
如果您想使用GitHubLikePasswordValidator
,您可能需要禁用Django的NumericPasswordValidator
和MinimumLengthValidator
。
最小字符数可以通过min_length
参数自定义。移除要求同时包含数字和小写字母的限制的长度可以通过safe_length
参数自定义。
MinimumUniqueCharactersPasswordValidator(min_unique_characters=4)
验证密码是否至少包含4个唯一字符。例如aaaaaaaaaabbbbbbccc
是一个无效密码,但aAbB
是一个有效密码。
唯一字符的最小数量可以通过min_unique_characters
参数自定义。
开发
- 创建并激活Python虚拟环境。
- 在虚拟环境中安装开发依赖项:
pip install -e '.[dev]'
- 安装pre-commit钩子:
pre-commit install
- 使用覆盖率运行测试:
py.test --cov
许可证
MIT
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分发
构建分发
django_pwned-1.2.1.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e43620a2980ff3ab8766e74eb8d71fb3e6cde86e274444e9f48253b9431ab3d9 |
|
MD5 | d47a0d68f97cac67ece104ec26256b0f |
|
BLAKE2b-256 | 599f85435c4b1df6382ffce99d6e998f854a045a4e72de0b01be908df3a36734 |
django_pwned-1.2.1-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 76cea422ce51725d514868f63b847070b01e477f0f49bd95804b13ae6a18c997 |
|
MD5 | 7fda262ab81a70b1fe20747492effdfd |
|
BLAKE2b-256 | ce53da93e569b0c0587c33e7cf015a1ecb2a6edbc3822ef1a16b4de445225e8a |