跳转到主要内容

使用Pwned Passwords API检查受损害密码的Django密码验证器。

项目描述

Django Pwned

pypi tests ci coverage MIT black

一组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的NumericPasswordValidatorMinimumLengthValidator

最小字符数可以通过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 (10.7 kB 查看哈希值)

上传时间

构建分发

django_pwned-1.2.1-py3-none-any.whl (8.7 kB 查看哈希值)

上传时间 Python 3

由以下机构支持