节点服务器:将安全凭据放在 npm 脚本中是否安全?



NodeJs 服务器通常需要凭据,例如快速会话密钥。由于环境变量可以在 npm 脚本中提供,因此将凭据放在那里是否被认为是一种好的做法?

例如(package.json(:

"scripts": {
"start": "EXPRESS_SESSION_KEY=mysessionkey node server server/index.js",
}

因此,当我npm start时,还会提供凭据。

附言Git存储库是私有的package.json因此不太可能泄漏。

不,这不安全。

即使 git 存储库是私有的并且package.json不是公开可用的,这个包含敏感信息的package.json文件可供所有开发人员使用——任何有权访问 git 存储库的人都可以访问密钥,这是一个大问题——更多的人访问密钥,风险更大。

为了解决安全问题,我的建议是使用2个密钥,一个用于开发和测试,一个用于生产。在package.json中,设置了开发密钥,以便开发人员可以轻松克隆代码并启动程序:

"scripts": {
"start": "DEV_KEY=devsessionkey node server server/index.js",
}

在使用KEY的代码中,将首先检查和使用PROD_KEY(生产密钥(。 仅当没有PROD_KEY时才使用DEV_KEY

var key = process.env.PROD_KEY ? process.env.PROD_KEY : process.env.DEV_KEY;

当DevOps工程师部署代码时,他/她将在操作系统中设置环境变量PROD_KEY,然后启动程序。这样,只有特定的DevOps工程师知道生产密钥,这使得它更加安全。

最新更新