symfony - Symfony .env 生产模式下的安全密码
问题描述
对于某些人来说,这可能是一个愚蠢的问题,我可能会得到一些反对票,但我需要知道。
如何在 Symfony 4.2 中保护生产模式的密码(敏感信息)?
我以为当我编译时composer dump-env prod
它会受到保护并且对公众不可见,但如果我运行,phpinfo();
我可以以纯文本形式看到我的所有密码......
DATABASE_URL
MAILER_URL
我应该services.yaml
像以前一样在参数下存储它们吗?
但是为什么我们甚至有.env
文件呢?
或者,一旦没有人可以访问我的服务器的 CLI,我就不应该为此烦恼?
解决方案
我所知道的在生产环境中存储密码的最常见和最安全的方式是使用环境变量。在 .env 或应用程序存储库中的其他文件中写入密码可能会通过提交到 GitHub、代码共享等导致意外泄漏。
.env 文件是一种创建环境变量的简单方法,主要用于本地开发。
在生产环境中,您将在主机上手动创建环境变量和/或通过 apache/nginx 配置、docker、kubernetes 机密等方式创建环境变量。
公众永远不应有权查看 phpinfo() 或您的环境变量。