我最近切换到Laravel的基于环境的应用程序部署,我决定使用$_ENV在.env文件中存储我的本地和生产服务器的凭据但是我发现调试打开时会发生异常并引发错误显示公开数据库凭据的环境变量.
现在我确定调试将始终关闭生产,因为这是我默认的,然后我在我的本地环境的本地文件夹中覆盖它,但是,如果不知何故某些调试在生产时打开并且用户强制404例外,他们需要做的就是读取页面,直到他们在普通视图中看到环境变量暴露凭证.在文档中,它表示对任何“真实”应用程序来说,保持数据库凭据远离实际配置是最佳做法.我在这里可能有点偏执.
我刚刚遇到了同样的问题,而我正在研究的项目要求我暂时打开我的开发机器到邪恶的外部世界来测试一些API回调.
因此,每当触发呐喊时,我都会暴露所有宝贵的密钥和密码.即使它是一个盲目的API回调机器,他们有机会记录对他们的请求的响应和一些工程师筛选它们并找到一些AWS密钥,不,谢谢.
这就是我现在使用的:
App::error(function (Exception $exception,$code) { // Never,ever,use environment variables in responses,not even when debugging $_SERVER = array_except($_SERVER,array_keys($_ENV)); $_ENV = []; });