NodeJS存储你需要解密和读取的加密数据库密码,而不是用户密码?

NodeJS storing encrypted database passwords you need to decrypt and read, not user passwords?

我正在为多租户应用程序构建一个节点 api,我正在使用内存中的租户目录,它存储所有连接字符串以连接到每个租户的数据库。

即使帐户可以执行的操作以及可以连接到这些特定帐户的数据库的来源有限制,我仍然不想考虑将这些密码存储为纯文本。

我以前使用过 bcrypt,但由于它的 'one-way' 性质,我真的无法使用 'stored' 密码。

在 NODE 应用程序中有安全的方法来处理这些问题吗?

Node 开箱即用 crypto,您可以使用它使用已知的私钥(密码)进行基本的对称加密。大概密钥存储在您的应用程序可以访问的安全位置,但不在数据库或源代码中。

这是一个简单的例子:https://lollyrock.com/posts/nodejs-encryption/

这为您提供了静态加密,这可能是一个很好的 "just in case" 安全预防措施。根据您使用的数据库,您可以在不更改应用程序的情况下选择加入静态加密 - 例如,如果您是 AWS 商店,您可以选择进行 encryption invisible to your application。否则,您需要在读取和写入行时进行解密和加密。