如何在NodeJS/Express应用程序中隐藏凭据?

4
我正在尝试创建一个在客户端本地运行的NodeJS服务器。我已经把访问数据库的所有凭据保存在一个配置文件中,并使用pkg模块创建了一个exe文件,以便我的客户可以运行exe文件并在他们的机器上启动服务器。
我不想让客户获得凭据,但是exe文件的源代码包含了凭据。如何保护数据库凭据?

最好的地方可能是Java中的密钥库。对于Node也一定有类似的东西,但是如果它在客户端上,它永远不会真正安全:您的客户端始终可以找到它/反向工程它。快速搜索“keystore node”:https://www.npmjs.com/package/key-store 看起来它能够完成这项工作,对吗? - sjahan
你有考虑过使用加密包吗,比如在这篇帖子中提到的那个? - Narm
您可以通过编码来模糊它们,并在启动时进行解码(在旧时代,人们通常使用base64,但您可以使用任何编码/加密)。这实际上取决于您评估发现风险和后果的程度,以确定要投入多少保护措施。 - user2771365
你无法保证安全。你可以混淆它,但仍然可以被反向工程,而且凭据仍然可以从网络流量中嗅探到。如果数据库不应直接连接,请不要暴露它。 - Estus Flask
使用Oracle钱包。这需要与EXE分开管理,并且您需要Oracle Net配置。请参见https://oracle.github.io/node-oracledb/doc/api.html#extauth。 - Christopher Jones
1个回答

0

将您的凭据加密存储,并让您的程序在启动时直接(或间接地通过编译后的程序进一步隐藏您的逻辑)对它们进行解密。


你的意思是将它们存储在客户端机器上还是在我的代码内部? - abhirham

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接