防止公共访问env文件

问题描述 投票:6回答:4

[我刚刚发现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文件?

php security laravel laravel-5
4个回答
5
投票

这不是一个漏洞,而且即使有人正确安装了Laravel,也不是一个远程问题-webroot是public文件夹,而不是存储库/项目的根。

laravel中的配置文件和.env文件不包含在webroot中,因此您只需要确保您的webroot为path/to/project/public

您提供的google查询实际上只是一群在安装Laravel之前没有阅读过文档的人。


1
投票

恕我直言,保护配置文件免受浏览的最佳方法是将其放在公共目录之外。通过.htaccess对其进行保护可能具有欺骗性,如果出现故障,您的文件将公开可用。


0
投票

我想指出您的解决方案仅有助于屏蔽实际的.env文件。启用调试模式时,在使用Whoops处理程序(可能还包括其他错误处理程序)时,发生错误时,环境变量也会显示给访问者(甚至可以是404)。

总结其他人在此话题中所说的话。 .env文件在以下情况下是安全问题:

  • 您已经在公共目录中安装了laravel,例如,可以是public,www或public_html。确保laravel安装中包含的公用文件夹是通过Web服务器公开的唯一文件夹。或者,您可以使用.htaccess保护.env文件。但这不是实际的解决方案。
  • 您已启用调试模式,并且错误处理程序显示具有所有环境变量的调试模式。禁用调试模式或对其进行配置,以便仅为特定用户或ips启用。这样可以防止在调试页面上共享环境变量。

0
投票

如果执行

config:cache

在部署过程中的命令,应确保仅从配置文件中调用env函数。一旦配置被缓存,.env文件将不会被加载,对env函数的所有调用都将返回null。

因此,在实时服务器中,您可以在执行config:cache命令后删除.env文件

© www.soinside.com 2019 - 2024. All rights reserved.