Magento 2: «Ваш веб-сервер настроен неправильно и разрешает несанкционированный доступ к конфиденциальным файлам. Пожалуйста, свяжитесь с вашим хостинг-провайдером »

18

Моя среда разработки Magento 2 начала высовывать мне следующее сообщение об ошибке

Ваш веб-сервер настроен неправильно и разрешает несанкционированный доступ к конфиденциальным файлам. Пожалуйста, свяжитесь с вашим хостинг-провайдером

Кто-нибудь выследил

  1. Какие проверки безопасности происходят?
  2. Где в основном коде происходят эти проверки?
Алан Сторм
источник
может у пожалуйста , скажите мне , какой вариант 2, вы должны использовать
Amit Бер
@AmitBera С отдельными пакетами, являющимися репозиториями композитора, я не совсем уверен, как это проверить
Alan Storm
1
@AlanStorm, это сообщение пришло из Magento\AdminNotification\Model\System\Message\Securityкласса. в какой ситуации вы получили это сообщение?
Божжаия
@magentotwo Когда я вошел в бэкэнд
Alan Storm

Ответы:

12

Эта проверка говорит, что любой может получить доступ к app/etc/*файлам. Например, app/etc/env.phpфайл, в котором хранятся учетные данные в БД, ключ шифрования и другие ресурсы.

Лучшее решение - настроить pubпапку в качестве корневого веб-каталога вместо каталога установки по умолчанию, как правило magento2, как указано в большинстве установочных документов. Это улучшит общую безопасность и решит вашу проблему. Обязательно отредактируйте и другие определения местоположения Apache / Nginx. Для Nginx $MAGE_ROOTдиректива должна быть /var/www/example.com/magento2/pub, как и ваша rootдиректива. Обязательно очистите кэш после внесения изменений, иначе изображения и css файлы будут повреждены (Система -> Инструменты -> Управление кэшем -> Очистить кэш Magento).

\Magento\AdminNotification\Model\System\Message\Securityнесет ответственность за эту функциональность. Смотрите _isFileAccessibleметод.

Это, безусловно, будет рисковать магазином Magento.

Канди
источник
3

Если вы используете Apache, убедитесь, что .htaccessфайл, который входит в magento в /app/папке, присутствует на вашем веб-сервере, и что Apache настроен на использование файлов .htaccess для переопределения настроек для каждой папки, но это должно быть включено по умолчанию.

Содержимое этого файла должно быть:

<IfVersion < 2.4>
    order allow,deny
    deny from all
</IfVersion>
<IfVersion >= 2.4>
    Require all denied
</IfVersion>
Dynomite
источник
1

Это системное сообщение, и это сообщение пришло от getText() метода, класса Magento\AdminNotification\Model\System\Message\Security.

Когда мы открываем панель администратора, контроллер проверяет все уведомления и связанную с ними безопасность.

вы можете отладить из execute()метода в Magento\AdminNotification\Controller\Adminhtml\System\Message\ListAction.php.

Bojjaiah
источник
Полезная информация, но не то, что я спросил. Некоторый код в Magento явно выполнял некоторые системные тесты и добавил это сообщение. Я хочу знать, где находятся эти системные тесты.
Алан Шторм
1

MAGENTO 2 Centos 7 Сервер

Исправить сообщение «Ваш веб-сервер настроен неправильно и разрешает несанкционированный доступ к конфиденциальным файлам. Пожалуйста, свяжитесь с вашим хостинг-провайдером».

1) ### shh- Запустите следующую команду из вашей учетной записи root. ###

chown -R accountuser:accountusergroup /path-to-root-folderl/

2) ### ssh - Запустите следующую команду от пользователя учетной записи домена (не вашей учетной записи веб-сервера, такой как apache и т. Д.). ###

find . -type d -exec chmod 770 {} \; & find . -type f -exec chmod 660 {} \; && chmod u+x bin/magento

chmod -R g+w /path-to-root-folderl/{pub,var} chmod -R g+w /path-to-root-folderl/{app/etc,vendor} chmod -R g+s pub/static pub/media . find var/generation -type d -exec chmod g+s {} \; find var/session -type d -exec chmod g+s {} \;

3) ### ssh - Запустите следующую команду из вашей учетной записи root. ###

chown -R domain_account_user:webservergroup /path-to-root-folderl/var chown -R domain_account_user:webservergroup /path-to-root-folder/app/etc chown -R domain_account_user:webservergroup /path-to-root-folderl/pub chown -R webserverUSER:webservergroup /path-to-root-folder/var/session

Это исправит эту ошибку и многие другие ошибки. Примечание: отключите SUPHP при использовании magento 2, вы избавите себя от головной боли. В настоящее время я запускаю mod_mpm_event с ea-apache24-mod_cgid и PHP 7 и ea-php70-php-fpm.

Мой magento 2 работал только с mod_mpm_event с ea-apache24-mod_cgid и PHP 7, прежде чем я добавил PHP-FPM.

Если вы используете cpanel / apache и не хотите использовать easyapache для перехода на mod_mpm_event + ea-apache24-mod_cgid, вы можете использовать shell из ssh. Запустите команду ниже из ssh. yum shell удалить ea-apache24-mod_mpm_worker удалить ea-apache24-mod_cgi установить ea-apache24-mod_mpm_event установить ea-apache24-mod_cgid выполнить quit

Вилли Алехо
источник
это будет работать только в некоторых средах хостинга .. может быть плохой идеей для других
Энди
1

В моем случае проблема была вызвана тем, что представление defaultмагазина было отключено. В то время как проверка безопасности была сделана, Magento\AdminNotification\Model\System\Message\Securityкласс попытался загрузить app/etc/config.phpфайл, было сгенерировано исключение ( Fatal error: Uncaught Magento\Framework\Exception\NoSuchEntityException: Default store is inactive), которое преобразовало код ответа в 200 (обычно это должно привести к 404). Таким образом, система подумала, что файл доступен, что означало бы проблему безопасности.

Просто включите представление defaultмагазина, чтобы исправить это.

Zsolti
источник
1

Одно простое решение - если вы не используете nginx, переименуйте файл nginx.conf в nginx.conf.sample в корневом каталоге вашей установки magento. Это сработало для меня, и предупреждающее сообщение исчезло в Magento Admin.

Санаулла Ахмад
источник
0

Я думаю, это проблема с правами доступа к каталогам и файлам. Пожалуйста, дайте соответствующие разрешения, такие как 0755 для каталогов 0644 для файлов, если это не решает проблему, пожалуйста, проверьте также файл .htaccess.

Suyog
источник
полезная информация, но не та, которую я просил. Я хочу знать, где в базе кода Magento эти проверки происходят.
Алан Шторм
0

Эти тесты присутствуют внутри класса, Magento\AdminNotification\Model\System\Message\Securityи этот текст уведомления приходит function getText(). Я думаю, что magento проверяет доступность app/etc/*файлов и на основании этого показывает предупреждение в админ-панели.

Sarvagya
источник