Strona główna  /  Bezpieczeństwo  /  Jak zabezpieczyć plik wp-config.php przed nieautoryzowanym dostępem?

Ciężkie, otwarte drzwi sejfu z cyfrową kłódką wewnątrz, symbolizujące zaawansowaną ochronę danych w pliku wp-config.php.

Jak zabezpieczyć plik wp-config.php przed nieautoryzowanym dostępem?

Plik wp-config.php zawiera dane dostępowe do bazy danych WordPressa oraz klucze bezpieczeństwa. Najlepiej ograniczyć ryzyko jego ujawnienia, przenosząc go poza public_html albo blokując dostęp bezpośredni przez .htaccess. Przed każdą zmianą wykonaj kopię plików i bazy danych.

Dlaczego wp-config.php wymaga ochrony?

wp-config.php to główny plik konfiguracyjny WordPressa. Zwykle znajduje się w katalogu instalacji, często w public_html. Zawiera między innymi nazwę bazy danych, użytkownika, hasło, adres serwera bazy oraz klucze bezpieczeństwa.

Jeżeli osoba niepowołana odczyta jego zawartość, może uzyskać dostęp do bazy danych, zmieniać konfigurację strony i wykorzystać zapisane w pliku dane podczas infekcji witryny. Dlatego sam fakt, że serwer interpretuje pliki PHP, nie powinien być jedyną warstwą ochrony.

Przed rozpoczęciem prac przygotuj:

  • Kopię wszystkich plików strony zapisaną poza serwerem.
  • Eksport bazy danych, na przykład z poziomu phpMyAdmin.
  • Lokalną kopię pliku wp-config.php.
  • Dostęp do FTP, SFTP, SSH albo menedżera plików hostingu.

Nie edytuj pliku bez kopii zapasowej. Brak średnika, literówka w ścieżce lub błędny cudzysłów może wywołać błąd krytyczny i unieruchomić stronę.

Metoda 1 – przeniesienie wp-config.php poza public_html

Przeniesienie pliku do katalogu nadrzędnego ogranicza możliwość jego odczytania przez żądanie HTTP. Oryginalny plik pozostaje jednak dostępny dla WordPressa, ponieważ w katalogu instalacji umieszczasz nowy, minimalny plik wskazujący właściwą lokalizację.

  1. Pobierz obecny plik wp-config.php i zachowaj jego kopię lokalnie.
  2. Przenieś właściwy plik do katalogu znajdującego się poziom wyżej niż public_html. Przykładowo może to być /home/USER/domena-config/wp-config.php. Użyj własnej ścieżki, ponieważ jej forma zależy od hostingu.
  3. W katalogu głównym WordPressa utwórz nowy plik o nazwie wp-config.php.
  4. W nowym pliku umieść odwołanie do przeniesionej konfiguracji, zastępując ścieżkę własnymi danymi:
    <?php
    require_once __DIR__ . '/../domena-config/wp-config.php';
  5. Wgraj plik do katalogu, w którym znajdują się między innymi wp-admin, wp-content i wp-includes.
  6. Otwórz stronę oraz panel administracyjny. Sprawdź też logowanie, formularze i połączenie z bazą danych.

Jeśli chcesz użyć innej nazwy przeniesionego pliku, wpisz ją w instrukcji require_once. Nie zostawiaj jednak kopii typu wp-config.php.bak, wp-config.old ani wp-config.txt w publicznym katalogu.

Uwaga na open_basedir. Ta dyrektywa PHP może ograniczać dostęp skryptów do określonych katalogów. Po przeniesieniu pliku WordPress może przestać działać, jeśli nowa lokalizacja znajdzie się poza dozwolonym zakresem. W takim przypadku przywróć kopię i skontaktuj się z administratorem serwera lub hostingiem. Nie zmieniaj open_basedir bez wiedzy, jakie konsekwencje będzie miała ta modyfikacja dla całego konta.

Metoda 2 – blokada dostępu przez .htaccess

Jeśli nie możesz przenieść pliku albo chcesz dodać drugą warstwę ochrony, zablokuj jego bezpośrednie wywołanie w konfiguracji Apache. Metoda nie zmienia lokalizacji pliku, lecz odrzuca żądania kierowane do niego przez przeglądarkę.

  1. Pobierz kopię głównego pliku .htaccess i zapisz ją lokalnie.
  2. Otwórz .htaccess znajdujący się w katalogu głównym WordPressa.
  3. Dodaj regułę blokującą dostęp do pliku:
    <Files wp-config.php>
    Require all denied
    </Files>
  4. Zapisz plik i wgraj go na serwer.
  5. Sprawdź działanie strony, panelu administracyjnego oraz bezpośredniego adresu do wp-config.php. Żądanie do pliku powinno zostać odrzucone, a WordPress powinien nadal działać.

Dyrektywa Require all denied jest właściwa dla nowszych konfiguracji Apache. Na starszych serwerach może być wymagana składnia:

<Files wp-config.php>
Order Allow,Deny
Deny from all
</Files>

Nie wklejaj obu wariantów jednocześnie bez sprawdzenia konfiguracji serwera. Błędna składnia w .htaccess może spowodować błąd 500. Przeniesienie pliku i blokada przez .htaccess to odrębne metody. Możesz stosować je razem, ale pierwsza wymaga poprawnej obsługi ścieżki przez PHP, a druga zależy od serwera WWW.

Jak ustawić uprawnienia pliku?

Uprawnienia systemowe ograniczają dostęp innym użytkownikom konta lub procesom działającym na serwerze. Dla wp-config.php często stosuje się chmod 600, a w środowiskach, w których wystarczy wyłącznie odczyt właściciela, także chmod 400. Nie ustawiaj tych wartości bez sprawdzenia, jak PHP działa na Twoim hostingu, ponieważ niektóre konfiguracje wymagają dostępu procesu serwera do odczytu pliku.

Po zmianie uprawnień sprawdź stronę, logowanie i zapisywanie ustawień. Jeśli pojawi się błąd odczytu konfiguracji, przywróć poprzednie uprawnienia i skonsultuj ustawienia z dostawcą serwera.

Najbezpieczniejszy proces wygląda tak: wykonaj backup, zastosuj jedną metodę, przetestuj stronę i zachowaj możliwość szybkiego przywrócenia poprzedniej wersji. Sama ochrona wp-config.php nie zastępuje aktualizacji WordPressa, motywów i wtyczek, ale ogranicza skutki przypadkowego lub nieautoryzowanego dostępu do najważniejszego pliku konfiguracyjnego.

Redakcja wpinternals.pl

WordPressa znamy od kuchni – budujemy na nim strony, migrujemy serwisy i optymalizujemy ich wydajność. Piszemy o wtyczkach, motywach, hostingu i bezpieczeństwie tak, by poradzili sobie także początkujący. Dbamy o to, by Twoja strona była szybka, stabilna i bezpieczna.

Może Cię również zainteresować

Potrzebujesz więcej informacji?