跳转到主要内容

https://github.com/RealOrangeOne/django-plaintext-password

项目描述

django-plaintext-password

CI PyPI PyPI - Python Version PyPI - Wheel PyPI - Status PyPI - License

Django密码哈希器,用于以纯文本形式存储密码。

“我应该在生产中使用这个吗?”

当然不应该。将密码存储在纯文本中是非常非常不好的。Django的默认设置非常安全,除非有充分的理由不使用,否则应该使用。

有关为什么在生产中使用这个是糟糕想法的更多信息,请参阅如何存储密码

在运行部署检查时,如果使用此功能,将抛出“CRITICAL”错误。

安装和使用

pip install django-plaintext-password

然后在 settings.py 中将 plaintext_password.PlaintextPasswordHasher 添加到 PASSWORD_HASHERS。为了确保它默认使用,将其设置为第一个或唯一的项目。

它是如何工作的?

默认情况下,Django将密码 password123 存储在类似以下格式的形式

pbkdf2_sha256$216000$gd57n4OWJrXh$Xs/TqhwJICOxsLONGlKXorjuWccooiuJmJOUaxbwcOQ=

这有利于安全性,因为密码在保存到数据库之前已经被加盐和散列,这使得几乎不可能恢复原始密码。然而,这个库却以原始形式存储密码。

plaintext$$password123

这使得通过密码进行搜索成为可能,同时允许比较用户密码,并允许您在用户忘记密码时通过电子邮件发送他们的密码——很方便!

除了直接在数据库中存储值以便于检索之外,比较操作只是简单地使用==进行,而不是使用secrets.compare_digest

为什么?

嗯,为什么不呢?

尽管非常认真地说,如果在测试过程中您创建了大量的用户,或者只有几个用户但有很多测试,通过简化密码哈希器可以大大提高性能。

遗憾的是,由于Django的限制(和特性),无法直接存储值,必须以算法为前缀。

项目详情


下载文件

下载适用于您平台文件的文件。如果您不确定选择哪一个,请了解更多关于安装包的信息。

源分布

django-plaintext-password-0.2.0.tar.gz (4.4 kB 查看哈希值)

上传时间

构建分布

django_plaintext_password-0.2.0-py3-none-any.whl (4.7 kB 查看哈希值)

上传时间 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面