Как скрыть конфигурационные файлы от прямого доступа?

Я использую Laravel для веб-приложения. Загрузил все на производстве и обнаружил, что некоторые файлы могут быть напрямую доступны по URL — например, http://example.com/composer.json

Как избежать этого прямого доступа?

16

Решение

Вы используете неправильную конфигурацию веб-сервера. Направьте свой веб-сервер на public каталог и перезапустите его.

За апаш Вы можете использовать эти директивы:

DocumentRoot "/path_to_laravel_project/public"<Directory "/path_to_laravel_project/public">

За Nginx, Вы должны изменить эту строку:

root /path_to_laravel_project/public;

После этого все файлы Laravel больше не будут доступны из браузера.

29

Другие решения

Это неверно. composer.json сидит за пределами public каталог и, следовательно, не должны быть доступны. Это означает, что ваша конфигурация VirtualHost неверна.

Пожалуйста, убедитесь, что ваш путь к каталогу заканчивается /public,

2

Укажите веб-сервер на общий каталог в корневой папке проекта.

project root folder/public

но если у вас нет общей папки и вы уже указываете на корневую папку, вы можете отказать в доступе, написав следующий код в .htaccess файл.

<Files ".env">
Order Allow,Deny
Deny from all
Allow from 127.0.0.1
</Files>

в приведенном выше коде сначала мы отказываемся от всех и разрешаем выполнение только с собственного сервера (с локального хоста на сервер), и, следовательно, мы можем защитить его от внешних пользователей.

1

Установите корневой документ как public каталог, поэтому другие файлы не будут доступны напрямую. Ищите это в вашем apache / nginx / ??? конфигурационные файлы.

0

Это зависит от вашего сервера. С Apache это будут файлы .htaccess, тогда как с Nginx это будет обрабатываться в файле конфигурации сервера.

0

Вы также можете запретить файлы в .htaccess.

<Files "composer.json">
Order Allow,Deny
Deny from all
</Files>
0

С помощью Apache вы можете создать файл .htaccess в корневом каталоге проекта Laravel, чтобы переписать все запросы в каталог public /.

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
0

Укажите свой веб-сервер в публичный каталог и перезапустите его.

Для Apache вы можете использовать эти директивы:

DocumentRoot "/path_to_laravel_project/public"<Directory "/path_to_laravel_project/public">

Также вы можете запретить файлы в .htaccess тоже.

<Files "composer.json">
Order Allow,Deny
Deny from all
</Files>

для нескольких файлов вы можете добавить вышеупомянутые файлы несколько раз в файлы .htaccess.

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector