Rozwój oprogramowania 22 września 2026 7 min czytania

Bezpieczeństwo WordPressa: lista kontrolna dla strony firmowej

Sam WordPress jest dziś zabezpieczony całkiem przyzwoicie. Kłopot sprawia wszystko, co do niego dokładamy: wtyczki, motywy kupione lata temu, konta byłych pracowników i hosting, którego nikt nie sprawdzał od dnia wdrożenia.

Skąd biorą się włamania na strony firmowe

Bezpieczeństwo WordPressa rzadko przegrywa z wyrafinowanym atakiem. Za większością typowych incydentów stoją trzy rzeczy: nieaktualna wtyczka ze znaną podatnością, przejęte hasło administratora i hosting współdzielony z innymi, zaniedbanymi stronami. Boty skanują internet bez przerwy i nie wybierają ofiar - szukają konkretnej wersji konkretnego dodatku. Jeśli ją masz, trafią do Ciebie w ciągu kilku dni od publikacji luki.

Skutki bywają mniej spektakularne niż wyciek bazy, ale kosztowne: przekierowania na strony hazardowe widoczne tylko dla osób wchodzących z Google, ukryte linki spamowe, wysyłka phishingu przez formularz kontaktowy, czerwone ostrzeżenie w przeglądarce. Wyobraź sobie kancelarię prawną, która dowiaduje się o problemie od klienta: jej strona po kliknięciu w wynik wyszukiwania przenosi na sklep z podróbkami. Źródłem okazuje się slider kupiony kilka lat temu i nigdy nieaktualizowany, bo „przecież działał”. To jeden z najbardziej typowych scenariuszy.

Poniżej lista, którą warto przejść raz porządnie, a potem powtarzać co kwartał.

Lista kontrolna: aktualizacje i dodatki

  1. Rdzeń WordPressa - aktualizacje poprawkowe są domyślnie automatyczne, ale sprawdź, czy nikt ich nie wyłączył w wp-config.php. Duże wersje instaluj po teście na kopii.
  2. Inwentaryzacja wtyczek - wypisz wszystkie dodatki i przy każdym odpowiedz: czy jest używany, kiedy autor ostatnio go aktualizował, czy pochodzi z oficjalnego repozytorium lub od znanego producenta. Wtyczka bez aktualizacji od ponad roku to kandydat do wymiany.
  3. Usuń, a nie wyłączaj - nieaktywna wtyczka nadal leży na serwerze, a jej podatny plik często da się wywołać bezpośrednio z internetu.
  4. Motywy - zostaw aktywny motyw i jeden domyślny jako zapasowy. Stare motywy potomne i pakiety demo usuń.
  5. Zero wersji „nulled” - pirackie kopie płatnych wtyczek bardzo często mają wszytego backdoora. Oszczędność kilkudziesięciu dolarów kończy się sprzątaniem całej instalacji.
  6. Wersja PHP - zajrzyj do panelu hostingu i upewnij się, że strona nie działa na gałęzi PHP, która nie dostaje już poprawek bezpieczeństwa.

Lista kontrolna: konta i logowanie

  • Każda osoba ma własne konto. Wspólny login „admin” używany przez agencję, marketing i szefa to proszenie się o kłopoty.
  • Rola Administrator tylko dla 1-2 osób. Osoby piszące teksty dostają rolę Redaktor lub Autor.
  • Logowanie dwuskładnikowe (aplikacja TOTP albo klucz sprzętowy) dla wszystkich kont z prawem publikacji.
  • Limit prób logowania i czasowa blokada adresu po serii nieudanych prób.
  • Konta byłych pracowników i poprzednich wykonawców usuń, a ich wpisy przypisz komuś innemu.
  • Hasła do bazy danych, SFTP i panelu hostingu inne niż do WordPressa, trzymane w menedżerze haseł.
  • Wyłącz xmlrpc.php, jeśli nie korzystasz z aplikacji mobilnej WordPressa ani Jetpacka - to popularna furtka do ataków słownikowych.

Lista kontrolna: serwer i konfiguracja

Ustawienie Co sprawdzić Dlaczego to ważne
Edycja plików z kokpitu DISALLOW_FILE_EDIT ustawione na true przejęte konto nie podmieni kodu motywu jednym kliknięciem
Uprawnienia plików katalogi 755, pliki 644, wp-config.php jeszcze ciaśniej ogranicza skutki włamania do sąsiednich stron na tym samym koncie
Klucze i sole unikalne, zmienione po każdym incydencie unieważniają skradzione ciasteczka sesji
HTTPS ważny certyfikat, przekierowanie z HTTP, brak mieszanej treści hasła i dane z formularzy nie lecą otwartym tekstem
Nagłówki bezpieczeństwa HSTS, X-Content-Type-Options, polityka osadzania w ramkach utrudniają część ataków po stronie przeglądarki
PHP w katalogu uploads wykonywanie zablokowane wgrany „obrazek” nie uruchomi się jako skrypt
Listowanie katalogów wyłączone nikt nie przegląda zawartości folderów z zewnątrz

Osobna sprawa to hosting. Jeśli na jednym koncie współdzielonym trzymasz stronę firmową, stary blog i testową instalację sprzed trzech lat, to włamanie do najsłabszej z nich otwiera drogę do pozostałych. Porządek zaczyna się od rozdzielenia albo skasowania tego, co zbędne.

Zapora aplikacyjna i monitoring

Wtyczka bezpieczeństwa w rodzaju Wordfence czy Solid Security to rozsądne minimum dla małej strony: skanuje pliki, porównuje je z oryginałami i odrzuca część podejrzanych żądań. Ma jednak ograniczenie - działa wewnątrz WordPressa, więc złośliwe żądanie musi najpierw do niego dotrzeć i zużyć zasoby serwera. Skuteczniejszą warstwą jest zapora aplikacji webowych (WAF) postawiona przed serwerem, na poziomie CDN lub reverse proxy. Odsiewa skanery, próby wykorzystania znanych luk i ataki na formularz logowania, zanim w ogóle dotrą do PHP.

Dwie rzeczy łatwo przeoczyć. Pierwsza to formularze: bez ochrony przed botami (honeypot, Cloudflare Turnstile albo reCAPTCHA) formularz kontaktowy staje się bramką do rozsyłania spamu z Twojej domeny, a to szybko psuje reputację poczty firmowej. Druga to wyciek nazw użytkowników. Domyślnie WordPress ujawnia loginy autorów w adresach archiwów i w REST API, co ułatwia zgadywanie haseł. Ogranicz publiczny endpoint użytkowników i ustaw nazwy wyświetlane inne niż login.

Oprócz tego przydają się:

  • monitoring dostępności z powiadomieniem, gdy strona przestaje odpowiadać,
  • kontrola integralności plików, czyli alert, gdy zmieni się coś w wp-includes bez aktualizacji,
  • Google Search Console podpięta pod firmową skrzynkę - tam pojawi się komunikat o zhakowanej treści,
  • logi dostępu trzymane dłużej niż kilka dni, bo bez nich trudno ustalić, którędy wszedł atakujący.

Kopie zapasowe, które da się odtworzyć

Kopia robiona przez wtyczkę i zapisywana w tym samym katalogu co strona chroni przed Twoją pomyłką, ale nie przed włamaniem. Ktoś, kto ma dostęp do plików, ma też dostęp do archiwów. Rozsądny układ to codzienna kopia bazy i plików wysyłana poza serwer (magazyn obiektowy, osobne konto) i przechowywana co najmniej 30 dni. Skąd tak długo? Infekcję wykrywa się często po kilku tygodniach, a wtedy tygodniowa rotacja zawiera już wyłącznie zarażone wersje.

Kopia zapasowa, której nigdy nie odtworzono na próbę, jest tylko nadzieją. Raz na kwartał postaw ją na serwerze testowym i sprawdź, czy strona działa, a formularz wysyła wiadomości.

Jeśli do włamania już doszło, samo wgranie plików z kopii nie wystarczy. Trzeba ustalić wektor ataku, zmienić wszystkie hasła i klucze, przejrzeć użytkowników w bazie, sprawdzić zadania cron i dopiero wtedy poprosić Google o ponowną weryfikację. Tym zajmujemy się w ramach usługi przywracania strony po awarii.

Co zrobić w tym tygodniu

Nie musisz wdrażać wszystkiego naraz. Kolejność, która daje najwięcej przy najmniejszym wysiłku:

  1. Usuń nieużywane wtyczki i motywy, zaktualizuj resztę.
  2. Przejrzyj konta użytkowników i włącz 2FA dla administratorów.
  3. Sprawdź, dokąd trafiają kopie i czy da się z nich odtworzyć stronę.
  4. Dodaj DISALLOW_FILE_EDIT i zablokuj PHP w katalogu z mediami.
  5. Rozważ WAF przed serwerem, szczególnie jeśli strona ma formularze albo sklep.

Większość tych punktów to jednorazowa praca na kilka godzin. Trudniej utrzymać porządek przez kolejne miesiące: cotygodniowe aktualizacje, reakcja na świeżo opublikowane podatności, sprawdzanie kopii. Jeśli nikt w firmie nie ma na to czasu, możesz przekazać to zadanie w ramach opieki nad stroną. Wszystko robimy zdalnie i co miesiąc wysyłamy raport: co zaktualizowaliśmy, co zablokowaliśmy i co wymaga Twojej decyzji.

RA

Redakcja Apply

Rozwój oprogramowania i e-commerce

Sprawdzimy zabezpieczenia Twojej strony

Opisz, na czym działa strona i kto się nią dziś zajmuje. Wskażemy najpilniejsze poprawki i zaproponujemy stałą opiekę.

Godziny pracy
pon.-pt. 8:00-18:00, odpowiedź w ciągu dnia roboczego
Spotkania
Online w Teams lub Google Meet

Używamy wyłącznie niezbędnych plików cookie: dzięki nim strona działa poprawnie i pamięta wybrane przez Ciebie miasto. Nie śledzimy Cię w celach reklamowych. Szczegóły znajdziesz w polityce prywatności.