【问题标题】:.ENV file is visible.ENV 文件可见
【发布时间】:2025-11-22 16:55:01
【问题描述】:

我正在使用 Laravel 5.1

我最近在共享主机中上传了我的项目。但是当我浏览 http://siteAddress.com/local/.env 时,我的 .env 文件是可见的。

如果人们想用文件夹视图浏览网站,有什么方法可以隐藏这个文件或重定向?

【问题讨论】:

  • 听起来好像缺少.htaccess 文件。
  • 我在根目录中有一个.htaccess 文件。它正在工作。 @汉内斯

标签: php laravel-5.1 env


【解决方案1】:

您可以在 .htaccess 文件中添加以下代码来禁用目录列表并限制 .env 文件的访问:

# Disable Directory listing
Options -Indexes

# block files which needs to be hidden, specify .example extension of the file
<Files ~ "\.(env|json|config.js|md|gitignore|gitattributes|lock)$">
    Order allow,deny
    Deny from all
</Files>

【讨论】:

    【解决方案2】:

    请在您有 .env 文件的地方创建一个.htaccess 文件并编写如下所示的代码:

    # STRONG HTACCESS PROTECTION
    <Files ~ "^.*\.([Ee][Nn][Vv])">
     order allow,deny
     deny from all
     satisfy all
    </Files>
    

    然后尝试从 url 中点击 .env 文件,它将不可用并显示里面的代码。

    如果你想从 github 中删除它。

    请在同一目录下创建新文件 .gitignore。

    并添加一行

    .env
    

    【讨论】:

    • Brave 您能否确认此正则表达式是否也可以捕获名为 .env.test 或 .env.development.local 的 .env 文件?如果没有,你能告诉我正确的方法吗?谢谢。 命令允许,拒绝拒绝所有满足所有
    • 嗯,对我不起作用。这是否必须在任何其他指令中?
    【解决方案3】:

    最后我隐藏了.env 并禁用了名为local 的文件夹的索引视图。我在文件夹local 中创建了一个.htaccess

    这里是.htaccess的代码

    # Disable index view
    Options -Indexes
    
    # Hide a specific file
    <Files .env>
        Order allow,deny
        Deny from all
    </Files>
    

    【讨论】:

    • 现在检查您公开的所有其他文件 by doing this 并将它们添加到您的 .htaccess 文件中,这样它们就不能被访问了。
    【解决方案4】:

    .env 文件位于 public 文件夹之外,因此如果服务器配置为将 public 文件夹视为文档根目录,则它不应从外部世界可见。

    最佳答案:

    请记住,一旦您的服务器配置为查看公用文件夹 作为文档根,没有人可以查看下一层的文件 该文件夹,这意味着您的 .env 文件已经受到保护,如 以及您的整个应用程序。 - 这就是公用文件夹的原因 在那里,保安。 - 您可以在您的文件中看到的唯一目录 如果您将文档根目录设置为公用文件夹,则浏览器是 那里的文件夹,例如样式和脚本。

    https://laracasts.com/discuss/channels/general-discussion/how-do-you-protect-env-file-from-public

    检查您主机上的文件夹结构并确保public 文件夹是文档根目录。

    【讨论】:

    • 我的项目中没有public 文件夹。我将所有文件从公共文件夹移动到根目录,并将其他文件和文件夹移动到另一个名为local(由我创建)的文件夹中。 @乐于助人
    • @smartrahat,你做错了。您已将根文件夹转换为公开所有敏感数据的公共文件夹
    • @manix,我这样做是为了在我的网站地址后面去掉/public。有没有办法用当前的文件结构保护它们?
    • @smartrahat,我担心你真的做错了 - 它没有受到保护,因为它不应该以你想要的方式使用。虽然从理论上讲,也许您可​​以使用 htaccess 来做到这一点,但您真正应该做的是与您的主机交谈以帮助您正确设置结构,或者获得一个您可以更好地控制事物的主机。
    • @GladToHelp 他在共享主机上没有做错如果在我看来他是这样的:如果使用根域,您必须这样做,否则您将如何将您的主域指向Cpanel 上的子文件夹(公共)?你不能。
    最近更新 更多