一个django应用程序,根据pwned passwords v2 api验证用户密码。

django-pwnedpasswords-validator的Python项目详细描述


image0image1

VersionPython Versions

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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java模拟存储库对象从controller testcase返回空结果?   Java扫描程序跳行异常   c#混淆If语句?   java为什么日志中的stacktrace前面没有这一行?   java如何使SSHJ在非标准端口上启动出站SFTP?   java我如何确定为什么每周收入没有在我的程序中显示前三次?   java如何判断堆叠条形图的轴的行为?   java rest json API的Web服务器体系结构   java ClassCastException:javax。摆动按扭   Java在Linux上不读取excel文件(使用Apache POI)   反馈错误后,java Wicket 1.4.9无法从modal使用AjaxRequestTarget!   java方法头中“静态”的含义是什么?   java无法在我的tomcat应用程序中添加外部库   java使用Itext Pdf将图像添加到Pdf文件   java为什么当我调用universe时java3d会闪烁。getCanvas()。getView()。重新油漆();   java Gson嵌套类在使用proguard时为空   java如何确定JSON路径对文档是否有效   java在使用Jsoup解析时保持HTML布尔属性的原始形式   使用Java SDK,如何在Azure存储文件服务中为文件设置元数据?