我刚刚发现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
文件?
答案 0 :(得分:5)
这不是一个漏洞,如果有人正确安装Laravel,它甚至不是远程问题 - webroot是public
文件夹,而不是存储库/项目根目录。
laravel中的配置文件和.env
文件未包含在webroot中,因此您只需确保您的webroot为path/to/project/public
。
您提供的Google查询实际上只是一群在安装Laravel之前没有阅读文档的人。
答案 1 :(得分:2)
如果执行
config:cache
在部署过程中使用命令,应确保仅从配置文件中调用env函数。一旦配置被缓存,将不会加载.env文件,并且所有对env函数的调用都将返回null。
因此在实时服务器中,您可以在执行config:cache命令后删除.env文件
答案 2 :(得分:1)
恕我直言,保护配置文件不被浏览的最佳方法是将其置于公共目录之外。通过.htaccess保护它可能具有欺骗性,如果出现问题,您的文件将公开发布。
答案 3 :(得分:0)
我想指出您的解决方案仅有助于屏蔽实际的.env文件。启用调试模式时,在使用Whoops处理程序(以及可能还有其他错误处理程序)时,如果发生错误,环境变量也会显示给访问者(这甚至可能是404)。
总结别人在这个帖子中所说的话。如果出现以下情况,则.env文件存在安全问题:
答案 4 :(得分:0)
您好,您可以创建一个
<块引用>.htaccess
在同一位置创建文件并编写以下代码。
# Disable index view
Options -Indexes
# Hide a specific file
<Files .env>
Order allow,deny
Deny from all
</Files>