pipe理Node.JS的Web服务凭据的最佳实践?

我们正在计划一个安全的Node.JS服务器,它使用多个第三方Web服务。 每个都需要凭据,需要由操作团队configuration。

很明显,他们可以简单地把它们放在一个configuration文件中。

Microsoft .NET似乎提供了DPAPI更好的select – 请参阅凭证存储最佳实践 。 有没有办法通过IISNode使其可用? 或者有没有其他的select来保护Node-JSconfiguration中的这些凭据?

  • 查尔斯

这里有几个选项的广泛讨论,其中包括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/指出,你可以经常在服务器上分别设置环境variables,并build议使用nconf来读取它们并分别configuration文件。

我仍然怀疑是否有特殊的IIS?

  • 查尔斯

有两种方法可以安全地做到这一点:

首先是在启动应用程序时使用命令行参数。

这些参数可以在process.argvfind

所以, node myapp.js username password会给你:

 process.argv[0]=node process.argv[1]=/.../myapp.js (absolute path) process.argv[2]=username process.argv[3]=password 

其次是将凭据设置为ENVvariables。 一般认为这是最好的做法,因为只有你有权访问这些variables。

您将不得不使用export命令设置variables,而不是在process.env访问它

我目前必须为我的外部API凭证执行完全相同的操作。 这是我做的

  • 安装node-config模块
  • 创build一个名为config / config.js的文件夹和文件
  • 这里需要(config)模块
  • 在本地框中它从local.json文件读取configuration
  • 我在local.json虚拟值为api密钥和共享的秘密
  • 在我的QA环境中,我输出两个variablesNODE_ENV =“QA”和NODE_CONFIG_DIR =“我的configuration文件夹在qa服务器上的path”
  • node-config模块从“config文件夹path/ QA.json”中读取configuration信息
  • 现在我在QA.json中有真正的api key和凭证
  • 在这里您可以使用encryption来encryption这些值并将其放回到QA.json中
  • 在您的应用程序中获取这些configuration值并解密在您的其他电话中使用它

希望这可以帮助。

所以你的configuration可以和节点代码一样在同一个容器中。

参考这个encryption和解密http://lollyrock.com/articles/nodejs-encryption/