Magento 2: „Twój serwer internetowy jest nieprawidłowo skonfigurowany i umożliwia nieautoryzowany dostęp do poufnych plików. Skontaktuj się z dostawcą usług hostingowych ”

18

Moje środowisko programistyczne Magento 2 zaczęło szturchać mnie następującym komunikatem o błędzie

Twój serwer internetowy jest nieprawidłowo skonfigurowany i umożliwia nieautoryzowany dostęp do poufnych plików. Skontaktuj się z dostawcą usług hostingowych

Czy ktoś wytropił

  1. Jakie kontrole bezpieczeństwa mają miejsce?
  2. Gdzie w głównym kodzie mają miejsce te kontrole?
Alan Storm
źródło
czy możesz mi powiedzieć, z której wersji 2 korzystasz
Amit Bera
@AmitBera Ponieważ poszczególne pakiety są repozytoriami kompozytorów, nie jestem pewien, jak to sprawdzić
Alan Storm,
1
@AlanStorm, ta wiadomość pochodzi z Magento\AdminNotification\Model\System\Message\Securityklasy. w jakiej sytuacji dostałeś tę wiadomość?
Bojjaiah
@magentotwo Gdy zalogowałem się do backendu
Alan Storm

Odpowiedzi:

12

Ta kontrola mówi, że każdy może uzyskać dostęp do app/etc/*plików. Na przykład app/etc/env.phpplik przechowujący dane uwierzytelniające do bazy danych, klucza szyfrowania i innych zasobów.

Lepszym rozwiązaniem jest skonfigurowanie pubfolderu jako katalogu głównego zamiast domyślnego katalogu instalacyjnego, zwykle magento2tak, jak określono w większości dokumentów instalacyjnych. Poprawi to ogólne bezpieczeństwo i rozwiąże problem. Edytuj także inne definicje lokalizacji Apache / Nginx. W przypadku Nginx $MAGE_ROOTdyrektywa powinna być /var/www/example.com/magento2/pub, podobnie jak twoja rootdyrektywa. Pamiętaj, aby wyczyścić pamięć podręczną po dokonaniu zmiany, w przeciwnym razie obrazy i pliki css zostaną uszkodzone (System -> Narzędzia -> Zarządzanie pamięcią podręczną -> Opróżnij pamięć podręczną Magento).

\Magento\AdminNotification\Model\System\Message\Securityodpowiada za tę funkcjonalność. Zobacz _isFileAccessiblemetodę.

Z pewnością zaryzykuje sklep Magento.

KAndy
źródło
3

Jeśli używasz Apache, upewnij się, że .htaccessplik dołączony do magento w /app/folderze znajduje się na twoim serwerze internetowym i że Apache jest skonfigurowany do używania plików .htaccess w celu zastąpienia ustawień poszczególnych folderów, ale powinno to być domyślnie włączone.

Zawartość tego pliku powinna być:

<IfVersion < 2.4>
    order allow,deny
    deny from all
</IfVersion>
<IfVersion >= 2.4>
    Require all denied
</IfVersion>
Dynomit
źródło
1

To komunikat systemowy i ten komunikat pochodzi od getText() metody, klasy Magento\AdminNotification\Model\System\Message\Security.

Po otwarciu panelu administracyjnego kontroler sprawdza wszystkie powiadomienia i związane z nimi zabezpieczenia.

możesz debugować z execute()metody w Magento\AdminNotification\Controller\Adminhtml\System\Message\ListAction.php.

Bojjaiah
źródło
Przydatne informacje, ale nie to, o co prosiłem. Niektóre kody w Magento wyraźnie uruchomiły niektóre testy systemowe i dodały ten komunikat. Chcę wiedzieć, gdzie są te testy systemów.
Alan Storm,
1

Serwer MAGENTO 2 Centos 7

Aby naprawić komunikat „Twój serwer WWW jest nieprawidłowo skonfigurowany i umożliwia nieautoryzowany dostęp do poufnych plików. Skontaktuj się z dostawcą hostingu”.

1) ### shh- Uruchom następujące polecenie z konta root. ###

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

2) ### ssh - Uruchom następujące polecenie od użytkownika konta domeny (nie konta serwera WWW, takiego jak apache itp.). ###

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 - Uruchom następujące polecenie z konta 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

To naprawi ten błąd i wiele innych błędów. Uwaga: wyłącz SUPHP podczas korzystania z Magento 2, zaoszczędzisz sobie dużo bólu głowy. Obecnie korzystam z mod_mpm_event z ea-apache24-mod_cgid i PHP 7 oraz ea-php70-php-fpm.

Miałem moje Magento 2 działające tylko z mod_mpm_event z ea-apache24-mod_cgid i PHP 7 zanim dodałem PHP-FPM.

Jeśli używasz cpanel / apache i nie chcesz używać easyapache, aby przejść do mod_mpm_event + ea-apache24-mod_cgid, możesz użyć powłoki z ssh. Uruchom komendę poniżej z ssh. mniam shell usuń ea-apache24-mod_mpm_worker usuń ea-apache24-mod_cgi zainstaluj ea-apache24-mod_mpm_event zainstaluj ea-apache24-mod_cgid uruchom zamknij

willy alejo
źródło
to będzie działać tylko na niektórych środowiskach hostingowych .. może być naprawdę złym pomysłem na innych
Andy
1

W moim przypadku problem był spowodowany tym, że defaultwidok sklepu został wyłączony. Podczas przeprowadzania kontroli bezpieczeństwa Magento\AdminNotification\Model\System\Message\Securityklasa próbowała pobrać app/etc/config.phpplik, zgłoszono wyjątek ( Fatal error: Uncaught Magento\Framework\Exception\NoSuchEntityException: Default store is inactive), który przekształcił kod odpowiedzi na 200 (zwykle powinien to wynik 404). System pomyślał więc, że plik jest dostępny, co oznaczałoby problem z bezpieczeństwem.

Wystarczy włączyć defaultwidok sklepu, aby to naprawić.

Zsolti
źródło
1

Jednym prostym rozwiązaniem jest, jeśli nie używasz nginx, zmień nazwę pliku nginx.conf na „nginx.conf.sample” w katalogu głównym instalacji magento. To zadziałało dla mnie, a komunikat ostrzegawczy zniknął w Administratorze Magento.

Sanaullah Ahmad
źródło
0

Myślę, że to problem z uprawnieniami do katalogu i plików. Podaj odpowiednie uprawnienia, takie jak 0755, do katalogów 0644 do plików, jeśli to nie rozwiąże problemu, sprawdź również plik .htaccess.

Suyog
źródło
przydatne informacje, ale nie informacje, o które prosiłem. Chcę wiedzieć, gdzie w bazie kodu Magento takie kontrole mają miejsce.
Alan Storm,
0

Testy te są obecne w klasie Magento\AdminNotification\Model\System\Message\Securityi pochodzi z nich tekst powiadomienia function getText(). Myślę, że magento sprawdza dostępność app/etc/*plików i na tej podstawie pokazuje ostrzeżenie w panelu administracyjnym.

Sarvagya
źródło