如何保护.env文件laravel

时间:2016-07-12 14:14:24

标签: php laravel-5.2

我将项目移至HOST但我可以使用地址mysite.com/.env访问.env并显示包含所有变量和安全数据的文件。 我的.env文件:

    APP_ENV=local
APP_DEBUG=true
APP_KEY=base64:xxxxxxx
APP_URL=http://localhost

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=xx
DB_USERNAME=xx
DB_PASSWORD=secret

CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

我如何隐藏此文件?这是合乎逻辑的解决方案吗?

注意:(我将所有文件公共文件夹移动到根目录中。)

6 个答案:

答案 0 :(得分:6)

在根目录中创建.htaccess文件并放入以下代码。

#Disable index view
options -Indexes

#hide a Specifuc File

<Files .env>
order allow,deny
Deny from all
</Files>

答案 1 :(得分:4)

我已尝试按照以下步骤在共享主机中部署 Laravel。

1 - 在 Ubuntu 操作系统中编辑 /etc/apache2/apache2.conf。请检查其他操作系统中的相应文件。

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride All # Changed from None to All
        Require all granted
</Directory>
  1. 启用模组重写sudo a2enmod rewrite

  2. 在根目录(公共 html 文件夹)中编辑或创建 .htaccess

     <Files ~ "\.(env|json|config.js|md|xml|gitignore|gitattributes|lock|editorconfig|yml|styleci.yml)$">
         Order allow,deny
         Deny from all
     </Files>
     Options -Indexes
     <Files ~ "(artisan|package.json|webpack.mix.js)$">
         Order allow,deny
         Deny from all
     </Files>
    

4 - 重启 Apache 服务器,sudo service apache2 restart

<块引用>

注意:- 前两个步骤仅在我自己的 PC 上使用。

答案 2 :(得分:2)

  1. 除公共文件夹以外的所有内容都移到更高级别,例如文件夹laravel - http://prntscr.com/bryvu7

  2. 更改文件publi_html / index.php 线

    require __DIR__.'/../bootstrap/autoload.php';

  3. require __DIR__.'/../laravel/bootstrap/autoload.php';
    

    并行

    $app = require_once __DIR__.'/../bootstrap/app.php';
    

    $app = require_once __DIR__.'/../laravel/bootstrap/app.php';
    $app->bind('path.public', function() {
        return __DIR__;
    });
    
    1. 更改文件laravel / server.php 线

      require_once __DIR__.'/public/index.php';

    2. require_once __DIR__.'/index.php';
      

答案 3 :(得分:0)

您应该将应用中的权限所有文件夹更改为741,但bootstrap和storage以及public(755)除外。

答案 4 :(得分:0)

您可能正在寻找如何阻止.env文件在apache上提供的方式,因此请阅读。

在/etc/apache2/apache.conf文件-Ubuntu上执行此操作。在该文件的这一部分之后
<FilesMatch "^\.ht">
 Require all denied
</FilesMatch>

在下面添加代码

# Hide a specific file
<Files .env>
    Order allow,deny
    Deny from all
</Files>

然后使用sudo service apache2 restart重新启动apache服务器,然后开始使用!

答案 5 :(得分:0)

在我以共享方式托管项目的情况下,可以访问.env文件,文件夹结构如下所示 根 | +应用 |应用程式 |配置 |数据库 |路线 |存储 | .env | ... | index.php | .htaccess | + CSS | + js

我的.env文件可通过此website.com/app/.env访问 解决方案 将所有公共内容放到一个名为public的文件夹中,并更改设置中的根文档路径[不要忘记更改index.php文件中的app.php路径] | + app | +公共

bootrap.php文件路径应类似于/../app/vendor/autload.php和/../ app / bootstrap / app.php