[我刚刚发现Laravel 5可能会输出敏感数据,并可能导致对许多主机的进一步利用:
https://www.google.com/search?q=intext%3ADB_PASSWORD+ext%3Aenv&gws_rd=ssl
我想知道保护.env
文件的方法。我可以使用.htaccess
文件中的以下代码来保护.env
文件不受浏览器视图的影响吗?
# Protect .env
<Files .env>
Order Allow,Deny
Deny from all
</Files>
[我在.htaccess
中的上述代码是否可以工作并保护我的.env
文件?
这不是一个漏洞,而且即使有人正确安装了Laravel,也不是一个远程问题-webroot是public
文件夹,而不是存储库/项目的根。
laravel中的配置文件和.env
文件不包含在webroot中,因此您只需要确保您的webroot为path/to/project/public
。
您提供的google查询实际上只是一群在安装Laravel之前没有阅读过文档的人。
恕我直言,保护配置文件免受浏览的最佳方法是将其放在公共目录之外。通过.htaccess对其进行保护可能具有欺骗性,如果出现故障,您的文件将公开可用。
我想指出您的解决方案仅有助于屏蔽实际的.env文件。启用调试模式时,在使用Whoops处理程序(可能还包括其他错误处理程序)时,发生错误时,环境变量也会显示给访问者(甚至可以是404)。
总结其他人在此话题中所说的话。 .env文件在以下情况下是安全问题:
如果执行
config:cache
在部署过程中的命令,应确保仅从配置文件中调用env函数。一旦配置被缓存,.env文件将不会被加载,对env函数的所有调用都将返回null。
因此,在实时服务器中,您可以在执行config:cache命令后删除.env文件