一个django应用程序,根据pwned passwords v2 api验证用户密码。
django-pwnedpasswords-validator的Python项目详细描述
django-pwnedpasswords-validator是一个django密码验证器 检查在数据泄露中是否存在用户提供的密码 Pwned Passwords v2 API。全部提供 密码数据是 k-anonymized之前 被发送到api,所以明文密码永远不会离开服务器。
来自https://haveibeenpwned.com/API/v2#PwnedPasswords:
Pwned Passwords are more than half a billion passwords which have previously been exposed in data breaches. The service is detailed in the launch blog post then further expanded on with the release of version 2. The entire data set is both downloadable and searchable online via the Pwned Passwords page.
安装
django pwnedpasswords验证器可通过下载 PyPi。 您可以立即使用pip安装它。
pip install django-pwnedpasswords-validator
然后,将django pwnedpasswords验证器添加到您的INSTALLED_APPS:
INSTALLED_APPS=(...'django_pwnedpasswords_validator')
最后,将django pwnedpasswords验证器添加到 AUTH_PASSWORD_VALIDATORS:
AUTH_PASSWORD_VALIDATORS=[...{'NAME':"django_pwnedpasswords_validator.validation.PwnedPasswordValidator"}]
如果要自定义错误消息(默认值为“this 密码以前出现过数据泄露,不应 使用“”,您可以在的OPTIONS参数中传入备用 验证器。
AUTH_PASSWORD_VALIDATORS=[...{'NAME':"django_pwnedpasswords_validator.validation.PwnedPasswordValidator",'OPTIONS':{'error_text':"Your password was found in a data breach.",}}]
安全说明
没有明文密码会让您的服务器使用 django pwnedpasswords验证器。
这是怎么回事?好吧,pwned密码v2 api有一个非常酷的 k-anonymity 实施。
从 https://blog.cloudflare.com/validating-leaked-passwords-with-k-anonymity/:
Formally, a data set can be said to hold the property of k-anonymity, if for every record in a released table, there are k − 1 other records identical to it.
这只允许我们提供sha-1散列的前5个字符 密码的问题。然后,api用sha-1列表响应 哈希后缀加上那个前缀。平均来说,这个列表包含478个 结果。
比我聪明的人 math 证明5个字符的前缀足以保持 k-此数据库的匿名性。
简而言之:如果您使用此密码,您的明文密码将受到保护 图书馆。你不会泄露足够的数据来识别哪个密码 你在找。
谢谢
特别感谢Troy Hunt 收集此数据并提供此服务。
另请参见
pwnedpasswords,一个 pwned passwords v2 api的命令行实用程序和python库。
许可证
apache许可证,2.0版。有关详细信息,请参见LICENSE。