https://github.com/RealOrangeOne/django-plaintext-password
项目描述
django-plaintext-password
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的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 737da67ae2ef2b13362e236a34a270a27288d74277339f4499517816fc26938d |
|
MD5 | b1218d71d7985522b2cd8f001a6a9c6e |
|
BLAKE2b-256 | 4ec1d17ff5bf814b274e1b3f4a230a2ee09d7d40e45c2ac5c032e9ecaa9a82dc |
关闭
django_plaintext_password-0.2.0-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9ad0a328c17fbd1553b980d948b23062bf6d496377379df20ba031a1e81df1df |
|
MD5 | e673b8ed6520b7a7b5f30afe39320d10 |
|
BLAKE2b-256 | 81feaf63904f72a48d78da8b4365644b61c5d5cc91d158b7c0c631180cbef695 |