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

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

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

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

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

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

Для nginx вы должны изменить эту строку:

 root /path_to_laravel_project/public; 

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

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

Убедитесь, что ваш путь к вашему каталогу заканчивается /public .

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

 project root folder/public 

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

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

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

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

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

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

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

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

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