Node.js 如何改进我的工作方式';我正在为我的NodeJS应用程序管理我的秘密API密钥';s在Heroku主持

Node.js 如何改进我的工作方式';我正在为我的NodeJS应用程序管理我的秘密API密钥';s在Heroku主持,node.js,security,heroku,environment-variables,secret-key,Node.js,Security,Heroku,Environment Variables,Secret Key,我已经根据文档创建了一个.env文件,并将所有的API密钥都放在该文件中。我还将这些环境变量作为配置变量添加到Heroku实例中。因此,在我的源代码中不再引用机密API字符串 但是,我没有忽略.env文件,因为git repo设置为private,我是它的唯一所有者,但是我忽略了.env文件,以阻止它被推送到Heroku中 我不忽略.env文件的理由是安全的吗?我采取的保护我的秘密API字符串的步骤是合理的和标准的吗?如果没有,我还可以如何改进我的设置以提高我的web应用程序的安全性?在.env

我已经根据文档创建了一个.env文件,并将所有的API密钥都放在该文件中。我还将这些环境变量作为配置变量添加到Heroku实例中。因此,在我的源代码中不再引用机密API字符串

但是,我没有忽略.env文件,因为git repo设置为private,我是它的唯一所有者,但是我忽略了.env文件,以阻止它被推送到Heroku中


我不忽略.env文件的理由是安全的吗?我采取的保护我的秘密API字符串的步骤是合理的和标准的吗?如果没有,我还可以如何改进我的设置以提高我的web应用程序的安全性?

.env
中的creds与您在heroku应用程序中的creds相同吗? 如果是这样的话,这是不好的

有人可以访问你的GitHub帐户,也可以访问你的Heroku应用程序中的creds。看看这里,让他们的GitHub组织受损正是发生的事情

您的
.env
文件应仅具有本地设置。例如,它应该调用
localhost
作为数据库,而不是生产数据库URL


然后,一旦一切都与生产分离,这个文件就可以安全地签入您的存储库。访问您的代码的人将无法访问您的生产数据。

哦,哇……我刚刚读到您指向Gentoo的链接,似乎我对在Github上存储.env文件的信任是错误的。在这种情况下,在确保每个人都拥有正确的API密钥的同时,人们如何在项目上协同工作?文件是否单独共享(通过其他安全方式),并且始终远离中央存储库?是的,有些密钥与heroku应用程序上的密钥相同。在本地,您不应该使用生产API密钥。例如,如果您需要第三方应用程序的OAuth凭据,开发人员应该创建自己的开发OAuth应用程序并在本地进行配置。你介意澄清一下OAuth应用程序是什么吗?我试着在网上四处看看,无意中发现了OAuth应用程序,但这对澄清OAuth应用程序实际上是什么并没有完全帮助,只是它不同于您的标准Github应用程序(我希望我没有找错方向)。