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

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

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

Ответ 1

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

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

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

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

root /path_to_laravel_project/public;

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

Ответ 2

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

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

Ответ 3

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

project root folder/public

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

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

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

Ответ 4

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

Ответ 5

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

Ответ 6

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

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

Ответ 7

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

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

Ответ 8

Направьте ваш веб-сервер в общий каталог и перезапустите его.

Для 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.

Ответ 9

просто создайте пустой

index.php

в каталоге конфигурации и напишите сообщение в файле, как вы хотите сообщить пользователю acccessor

ех. доступ запрещен сервером

Ответ 10

Для apache 2.4 или выше используйте

<Files "web.config">  
  Require all denied
</Files>