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 |