Security 在.env文件中保存敏感数据的错误做法

Security 在.env文件中保存敏感数据的错误做法,security,environment-variables,environment,Security,Environment Variables,Environment,如果我们有一个私有的github repo,在那里我们保存机密并从.env文件加载,这将把敏感信息(如用户名、密码、api密钥、访问密钥等)保存到一个真实来源,但这在安全性方面是一个坏做法吗 数据在技术上是通过应用程序公开的,如果一些恶意实体能够访问源代码,他们将能够看到所有的秘密,就好像存储库访问被破坏了一样 另一种方法是在运行时注入数据(通过脚本、Docker容器等),这将消除此漏洞,但是否有必要?首先,建议不要将.env提交到git(将其添加到.gitignore),而是使用一个列出所有相

如果我们有一个私有的github repo,在那里我们保存机密并从
.env
文件加载,这将把敏感信息(如用户名、密码、api密钥、访问密钥等)保存到一个真实来源,但这在安全性方面是一个坏做法吗

数据在技术上是通过应用程序公开的,如果一些恶意实体能够访问源代码,他们将能够看到所有的秘密,就好像存储库访问被破坏了一样


另一种方法是在运行时注入数据(通过脚本、Docker容器等),这将消除此漏洞,但是否有必要?

首先,建议不要将
.env
提交到git(将其添加到.gitignore),而是使用一个列出所有相关变量的
.env.example
(没有值或有伪值)并有代码注释解释它们各自在做什么

第二,你的问题的答案是,你不应该向git提交机密,即使你提交,然后删除,再提交,它仍然存在于git历史中,这也是不好的

如今,有很多恶意脚本随时扫描github repos以查找此类数据,我不止一次听说AWS帐户因此类错误而被黑客攻击,因此底线是:确保数据安全!


最后,即使您的github回购协议是私有的,您也希望保留这些做法,因为它可能会被错误地公开,然后您的数据被公开只需几秒钟!

谢谢您的澄清