Я использую Laravel для веб-приложения. Загрузили все на производство и выяснили, что к некоторым файлам можно напрямую обращаться по url - например http://example.com/composer.json
Как избежать прямого доступа?
Я использую 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>
Направьте ваш веб-сервер в общий каталог и перезапустите его.
Для 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.
просто создайте пустой
index.php
в каталоге конфигурации и напишите сообщение в файле, как вы хотите сообщить пользователю acccessor
ех. доступ запрещен сервером
Для apache 2.4 или выше используйте
<Files "web.config">
Require all denied
</Files>