{"id":13725375,"url":"https://github.com/ubernostrum/pwned-passwords-django","last_synced_at":"2025-05-16T10:06:35.314Z","repository":{"id":56473157,"uuid":"124067069","full_name":"ubernostrum/pwned-passwords-django","owner":"ubernostrum","description":"Utilities for working with the Pwned Passwords database from Django.","archived":false,"fork":false,"pushed_at":"2025-04-06T07:58:06.000Z","size":301,"stargazers_count":130,"open_issues_count":0,"forks_count":8,"subscribers_count":5,"default_branch":"trunk","last_synced_at":"2025-05-15T00:13:18.124Z","etag":null,"topics":["django","password-strength","passwords","pwned-passwords","python","security"],"latest_commit_sha":null,"homepage":"https://pwned-passwords-django.readthedocs.io/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ubernostrum.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":"CONTRIBUTING.rst","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-03-06T11:15:11.000Z","updated_at":"2025-04-21T03:31:04.000Z","dependencies_parsed_at":"2024-02-23T08:23:54.174Z","dependency_job_id":"b85c8e49-8a60-4207-bdf1-112f59582e7e","html_url":"https://github.com/ubernostrum/pwned-passwords-django","commit_stats":{"total_commits":159,"total_committers":5,"mean_commits":31.8,"dds":"0.11949685534591192","last_synced_commit":"6935c9a9709baf44edc2b02a39d130d54e3e730b"},"previous_names":[],"tags_count":20,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ubernostrum%2Fpwned-passwords-django","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ubernostrum%2Fpwned-passwords-django/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ubernostrum%2Fpwned-passwords-django/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ubernostrum%2Fpwned-passwords-django/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ubernostrum","download_url":"https://codeload.github.com/ubernostrum/pwned-passwords-django/tar.gz/refs/heads/trunk","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254509476,"owners_count":22082891,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["django","password-strength","passwords","pwned-passwords","python","security"],"created_at":"2024-08-03T01:02:21.021Z","updated_at":"2025-05-16T10:06:35.297Z","avatar_url":"https://github.com/ubernostrum.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":".. -*-restructuredtext-*-\n\n.. image:: https://github.com/ubernostrum/pwned-passwords-django/workflows/CI/badge.svg\n   :alt: CI status image\n   :target: https://github.com/ubernostrum/pwned-passwords-django/actions?query=workflow%3ACI\n\n``pwned-passwords-django`` provides helpers for working with the\n`Pwned Passwords database from Have I Been Pwned\n\u003chttps://haveibeenpwned.com/Passwords\u003e`_ in `Django\n\u003chttps://www.djangoproject.com/\u003e`_ powered sites. Pwned Passwords is\nan extremely large database of passwords known to have been\ncompromised through data breaches, and is useful as a tool for\nrejecting common or weak passwords.\n\nThere are three main components to this application:\n\n* `A password validator\n  \u003chttps://pwned-passwords-django.readthedocs.io/en/latest/validator.html\u003e`_\n  which integrates with `Django's password-validation tools\n  \u003chttps://docs.djangoproject.com/en/5.0/topics/auth/passwords/#module-django.contrib.auth.password_validation\u003e`_\n  and checks the Pwned Passwords database.\n\n* `A Django middleware\n  \u003chttps://pwned-passwords-django.readthedocs.io/en/latest/middleware.html\u003e`_\n  (supporting both sync and async requests) which automatically checks\n  certain request payloads against the Pwned Passwords database.\n\n* `An API client\n  \u003chttps://pwned-passwords-django.readthedocs.io/en/latest/api.html\u003e`_\n  providing direct access (both sync and async) to the Pwned Passwords\n  database.\n\nAll three use a secure, anonymized API which `never transmits any\npassword or its full hash to any third party\n\u003chttps://pwned-passwords-django.readthedocs.io/en/latest/faq.html#api-safety\u003e`_.\n\n\nUsage\n-----\n\nThe recommended configuration is to enable both the validator and the\nautomatic password-checking middleware. To do this, make the following\nchanges to your Django settings.\n\nFirst, add the validator to your AUTH_PASSWORD_VALIDATORS list:\n\n.. code-block:: python\n\n   AUTH_PASSWORD_VALIDATORS = [\n       # ... other password validators ...\n       {\n           \"NAME\": \"pwned_passwords_django.validators.PwnedPasswordsValidator\",\n       },\n   ]\n\nThen, add the middleware to your MIDDLEWARE list:\n\n.. code-block:: python\n\n   MIDDLEWARE = [\n       # .. other middlewares ...\n       \"pwned_passwords_django.middleware.pwned_passwords_middleware\",\n   ]\n\nFor more details, consult `the full documentation\n\u003chttps://pwned-passwords-django.readthedocs.io/\u003e`_.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fubernostrum%2Fpwned-passwords-django","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fubernostrum%2Fpwned-passwords-django","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fubernostrum%2Fpwned-passwords-django/lists"}