如何在Django中加密和解密访问密码?

问题描述 投票:0回答:2

我的 Django 应用程序需要一个表来存储不同用户的凭据,以访问存储其信息的外部数据库。出于安全和技术原因,不使用 Django 使用的同一数据库。但在存储过程中,我想在插入持久性之前对密码进行加密,然后再找到一种解密密码以便使用它们的方法。

我的第一个方法是使用 make_password 函数,但我找不到解密密码的方法。

现在我正在使用 pre_save 脚本测试 django 信号,该脚本使用 cryptographi.fernet 算法对密码进行加密。随后,该信息在视图执行中被解密。对于加密和解密,我将密钥保存在设置文件中(从环境加载)。

我想知道这是否是足够安全的程序来管理用户关键信息的凭据。另外,在使用 make_password 函数时是否有任何方法可以取回密码。

django security cryptography
2个回答
0
投票

您的设计存在的问题是您需要主密码才能解密密码。你的问题并非微不足道;在数据库中保存密码的建议是使用哈希值,但该解决方案不适合您。

主密钥的另一个问题是它位于内存中,因此,执行内存转储的攻击者可以检索它并解密所有密码。因此,也许使用后归零可以解决这个问题。现在,使用更适合您情况的解决方案。编程不仅仅是一种方式...

在 Django 中,解决方案可能是模型和视图中的 CharField 实现加密/解密的逻辑。或者使用您提到的 pre_save 脚本。但关于你的问题是否足够安全,这取决于你正在处理的信息。


0
投票

我对这个帖子有确切的挑战,我能得到你最好的解决方案吗

© www.soinside.com 2019 - 2024. All rights reserved.