我们正在计划一个安全的Node.JS服务器,该服务器使用多个第三方Web服务。每个都需要运营团队需要配置的凭证。
显然,他们可以简单地将它们以明文形式放入配置文件中。
Microsoft .NET似乎为DPAPI提供了更好的选择 - 请参阅Credential storage best practices。有没有办法通过IISNode提供此功能?或者是否有其他选项可以在Node-JS配置中保护此类凭据?
答案 0 :(得分:4)
这里有几个选项的广泛讨论,包括xShirase提出的两个选项:
http://pmuellr.blogspot.co.uk/2014/09/keeping-secrets-secret.html
用户定义的服务解决了这个问题,但仅适用于Cloud Foundry。
此博客http://encosia.com/using-nconf-and-azure-to-avoid-leaking-secrets-on-github/指出您经常可以在服务器上单独设置环境变量,并建议使用nconf分别读取它们和配置文件。
我仍然想知道IIS是否有特价?
答案 1 :(得分:2)
有两种安全方法:
首先,在启动应用程序时使用命令行参数。
然后在process.argv
所以,node myapp.js username password
会给你:
process.argv[0]=node
process.argv[1]=/.../myapp.js (absolute path)
process.argv[2]=username
process.argv[3]=password
其次是将凭证设置为ENV变量。它通常被认为是最佳实践,因为只有您可以访问这些变量。
您必须使用导出命令设置变量,而不是在process.env
答案 2 :(得分:1)
我目前必须为我的外部API凭据做同样的事情。这就是我做的事情
因此您的配置可以与节点代码位于同一容器中。
请参阅此内容以进行加密和解密 http://lollyrock.com/articles/nodejs-encryption/