提问人:adminpaz 提问时间:7/9/2023 更新时间:10/24/2023 访问量:191
如何在 Django 中加密和解密访问密码?
How to encrypt and decrypt access passwords in Django?
问:
我的 Django 应用程序需要一个表来存储不同用户的凭据,以访问存储其信息的外部数据库。不使用 Django 使用的相同数据库是出于安全和技术原因。但是在存储过程中,我想在插入持久性之前加密密码,然后再解密密码以使用它们。
我的第一种方法是使用make_password函数,但我找不到解密密码的方法。
现在,我正在使用一个pre_save脚本测试 django 信号,该脚本使用 cryptographi.fernet 算法加密密码。稍后,这在视图执行中被解密。对于加密和解密,我将密钥保存在设置文件(从环境加载)中。
我想知道这是否足够安全,可以管理用户关键信息的凭据。此外,如果有任何方法可以在使用make_password功能时取回密码。
答:
0赞
sinkmanu
7/9/2023
#1
您的设计存在一个问题,即您需要一个主密码才能解密密码。你的问题不是微不足道的;在数据库中保存密码的建议是使用哈希,但该解决方案不适合您。
主密钥的另一个问题是它将在内存中,因此,执行内存转储的攻击者可以检索它并解密所有密码。因此,也许使用后的归零可能是一个解决方案。现在,使用更适合您情况的解决方案。编程不仅是一种方式......
在 Django 中,解决方案可以是,模型和视图中的 CharField 实现逻辑以加密/解密。或者使用您提到的pre_save脚本。但是关于你的问题是否足够安全,这取决于你正在处理的信息。
评论