Szybka odpowiedź: żeby zabezpieczyć stronę WordPress, zacznij od podstaw. Przede wszystkim aktualizuj WordPressa, wtyczki i motyw. Rób automatyczne kopie zapasowe przechowywane poza serwerem. Używaj długich, unikalnych haseł i logowania dwuskładnikowego i trzymaj jak najmniej wtyczek – według Patchstack aż 91% nowych podatności z 2025 r. dotyczyło wtyczek. Do tego dochodzą zabezpieczenia, które ustawisz bez żadnej wtyczki: blokada xmlrpc.php, ograniczenie dostępu do wp-login.php, wyłączenie edytora plików i poprawne uprawnienia. Na końcu – monitoring i plan, co robić, gdy coś pójdzie źle.
Stan na październik 2026 r. Ten poradnik łączy i aktualizuje dwa wcześniejsze wpisy: „Zabezpieczenie stron internetowych” (2023) i „Jak zabezpieczyć stronę bez wtyczek” (2024) – razem z filmem i poprawionymi kodami do .htaccess.
- 1. Dlaczego strony WordPress są atakowane?
- 2. Fundamenty: aktualizacje, hosting i kopie zapasowe
- 3. Logowanie: hasła, 2FA i nazwy użytkowników
- 4. Mniej wtyczek = mniej furtek
- 5. Zabezpieczenia bez wtyczek: .htaccess i wp-config.php
- 6. Szyfrowanie, formularze i błędy
- 7. Monitoring i plan na wypadek ataku
- 8. Lista kontrolna – zabezpieczenie WordPressa
- 9. Podsumowanie
- 10. FAQ – najczęściej zadawane pytania
- Źródła i dalsza lektura
1. Dlaczego strony WordPress są atakowane?
Większość ataków na małe strony nie jest wymierzona w konkretną firmę. To automaty, które przez całą dobę skanują internet w poszukiwaniu znanych luk i słabych haseł. Liczby z raportu Patchstack „State of WordPress Security in 2026” dobrze to pokazują:


- w 2025 r. wykryto 11 334 nowe podatności w ekosystemie WordPressa – o 42% więcej niż rok wcześniej,
- 91% z nich dotyczyło wtyczek, 9% motywów, a w samym rdzeniu WordPressa było ich tylko 6 – wszystkie o niskim priorytecie,
- 46% podatności nie miało poprawki od autora w dniu publicznego ujawnienia,
- najczęściej atakowane luki zaczynano masowo wykorzystywać średnio już po 5 godzinach.
Wniosek jest prosty: najsłabszym ogniwem nie jest WordPress, tylko dodatki i zaniedbania – nieaktualne wtyczki, porzucone motywy, słabe hasła i brak kopii zapasowych.
2. Fundamenty: aktualizacje, hosting i kopie zapasowe
Krok 1. Aktualizuj wszystko, regularnie
WordPress, wtyczki, motywy i PHP na serwerze. W kokpicie możesz włączyć automatyczne aktualizacje dla wtyczek i motywów. Przy sklepie lub rozbudowanej stronie rób to z kopią zapasową i szybkim testem po aktualizacji. Dokumentacja Hardening WordPress stawia aktualizacje na pierwszym miejscu.
Krok 2. Wybierz hosting, który dba o bezpieczeństwo
Dobry hosting to aktualne PHP, izolacja kont, zapora aplikacji (WAF), ochrona przed atakami na logowanie i automatyczne kopie. Sam korzystam z cyber_Folks (link polecający). Więcej o wyborze serwera piszę w poradniku jak kupić domenę i hosting.
Krok 3. Kopie zapasowe według zasady 3-2-1
Trzy kopie danych, na dwóch różnych nośnikach, z czego jedna poza serwerem. Kopia trzymana tylko na tym samym hostingu nie pomoże, jeśli konto zostanie przejęte albo hosting będzie miał awarię. Raz na jakiś czas sprawdź też, czy z kopii da się naprawdę odtworzyć stronę.
3. Logowanie: hasła, 2FA i nazwy użytkowników
Krok 4. Długie i unikalne hasła
Najlepiej generowane przez menedżer haseł – długie i inne dla każdego serwisu. Jedno hasło używane w kilku miejscach to zaproszenie dla atakującego, gdy któryś serwis wycieknie.
Krok 5. Logowanie dwuskładnikowe (2FA)
Kod z aplikacji na telefonie albo klucz sprzętowy sprawiają, że samo hasło nie wystarczy do zalogowania. Dla administratorów to dziś obowiązek. Możesz użyć np. wtyczki Two Factor rozwijanej przez społeczność WordPressa albo funkcji 2FA w panelu hostingu.
Krok 6. Bez konta „admin” i z ograniczonymi uprawnieniami
Nie używaj loginu admin. Każdej osobie nadaj tylko takie uprawnienia, jakich potrzebuje – redaktorowi rolę Redaktora, a nie Administratora. Konta osób, które już nie współpracują z firmą, usuń.
4. Mniej wtyczek = mniej furtek
Krok 7. Instaluj tylko to, czego naprawdę potrzebujesz
Jestem zwolennikiem ograniczania wtyczek na stronach WordPress. Każda kolejna wtyczka to więcej kodu, więcej aktualizacji i więcej potencjalnych luk – liczby z rozdziału 1 mówią same za siebie. Zanim zainstalujesz wtyczkę, sprawdź:
- czy tej funkcji nie ma już w motywie, hostingu albo samym WordPressie,
- kiedy była ostatnia aktualizacja i czy wtyczka jest zgodna z bieżącą wersją WordPressa,
- czy pochodzi z katalogu WordPress.org lub od znanego producenta,
- czy po wyłączeniu nie zostawia śmieci w bazie.
Nieużywane wtyczki i motywy usuń, a nie tylko wyłącz. Nigdy nie instaluj pirackich („nulled”) wersji płatnych wtyczek i motywów – to jeden z najczęstszych sposobów na zainfekowanie strony.
5. Zabezpieczenia bez wtyczek: .htaccess i wp-config.php
Poniższe ustawienia działają na serwerach Apache i LiteSpeed (najpopularniejszych na polskich hostingach współdzielonych). Przed edycją pliku .htaccess zrób jego kopię – literówka może spowodować błąd 500 całej strony. W filmie pokazuję, jak to zrobić krok po kroku:
W filmie (2024) używam starszej składni Order/Deny/Allow z Apache 2.2. Na większości serwerów nadal działa ona dzięki modułowi zgodności, ale dokumentacja Apache zaleca nową składnię Require. Poniżej podaję obie wersje – nie mieszaj ich w jednym bloku.
Krok 8. Zablokuj xmlrpc.php
Plik xmlrpc.php służy do zdalnej komunikacji z WordPressem (np. starsze aplikacje mobilne, niektóre usługi). Jest też częstym celem ataków na hasła, bo pozwala sprawdzić wiele haseł w jednym żądaniu – ostrzega przed tym dokumentacja WordPressa. Jeśli z niego nie korzystasz (np. nie używasz Jetpacka), zablokuj go:
# Apache 2.4 / LiteSpeed
<Files xmlrpc.php>
Require all denied
</Files>
# starsza składnia (Apache 2.2)
<Files xmlrpc.php>
Order deny,allow
Deny from all
</Files>
Krok 9. Ogranicz logowanie do swojego adresu IP
Jeśli masz stały adres IP, możesz pozwolić na otwarcie strony logowania tylko z niego. Wpisz swój adres zamiast przykładowego 203.0.113.15:
# Apache 2.4 / LiteSpeed
<Files wp-login.php>
Require ip 203.0.113.15
</Files>
# starsza składnia (Apache 2.2)
<Files wp-login.php>
Order deny,allow
Deny from all
Allow from 203.0.113.15
</Files>
Krok 10. Dodatkowe hasło do strony logowania (zmienne IP)
Jeśli Twój adres IP się zmienia, zamiast blokady IP ustaw dodatkowe uwierzytelnianie serwera. Przed formularzem WordPressa pojawi się wtedy okno z drugim loginem i hasłem. Plik .htpasswd z zaszyfrowanym hasłem utworzysz w panelu hostingu (sekcja „Ochrona katalogów” lub podobna). Trzymaj go poza katalogiem public_html:
<Files wp-login.php>
AuthType Basic
AuthName "Dostep chroniony"
AuthUserFile /home/twoje-konto/.htpasswd
Require valid-user
</Files>
Chroń w ten sposób tylko plik wp-login.php, a nie cały katalog /wp-admin – dokumentacja WordPressa ostrzega, że blokada całego katalogu potrafi zepsuć wtyczki korzystające z AJAX.
Krok 11. Wyłącz edytor plików i zadbaj o uprawnienia
W pliku wp-config.php, powyżej linii „That’s all, stop editing!”, dopisz:
define( 'DISALLOW_FILE_EDIT', true );
To wyłącza edycję plików motywów i wtyczek z kokpitu – częste narzędzie atakującego po przejęciu konta. Zgodnie z dokumentacją WordPressa ustaw też uprawnienia: 644 dla plików, 755 dla katalogów, a wp-config.php najlepiej 400 lub 440, jeśli serwer na to pozwala.
6. Szyfrowanie, formularze i błędy
Krok 12. HTTPS na całej stronie
Certyfikat SSL to podstawa – bez niego hasło do panelu i dane z formularzy płyną otwartym tekstem. Jak go włączyć i czego pilnować w 2026 r., opisałem w artykule o certyfikacie SSL.
Krok 13. Zabezpiecz formularze i nie pokazuj błędów
Formularze kontaktowe zabezpiecz przed spamem (CAPTCHA lub ukryte pole-pułapka) i ogranicz liczbę wysyłek. Na działającej stronie wyłącz wyświetlanie błędów PHP (WP_DEBUG ustawione na false). Komunikaty z błędami zdradzają ścieżki na serwerze i wersje oprogramowania. Z listy OWASP Top 10:2025 dla typowej strony firmowej najważniejsze są błędy kontroli dostępu, złe konfiguracje i ataki typu injection – w większości przypadków chronią przed nimi właśnie aktualizacje, ograniczenie uprawnień i ostrożność z wtyczkami.
7. Monitoring i plan na wypadek ataku
Krok 14. Monitoruj stronę
- dostępność – darmowy monitoring wyśle e-mail lub SMS, gdy strona przestanie odpowiadać,
- logi – nagłe skoki prób logowania czy dziwne żądania w logach serwera to sygnał ostrzegawczy,
- skanowanie złośliwego kodu – w panelu hostingu albo zewnętrznym narzędziem,
- Google Search Console – powiadomi Cię, jeśli Google wykryje na stronie złośliwe oprogramowanie lub spam.
Krok 15. Przygotuj plan działania
Spisz w jednym miejscu, gdzie są kopie zapasowe, kto ma dostęp do hostingu i domeny oraz jak przywrócić stronę. Jeśli dojdzie do włamania:
- zmień hasła do panelu WordPressa, hostingu, FTP i bazy danych,
- przywróć czystą kopię zapasową sprzed infekcji,
- zaktualizuj wszystko i usuń podejrzane konta oraz wtyczki,
- zgłoś incydent do CERT Polska,
- jeśli wyciekły dane osobowe klientów, pamiętaj o obowiązku zgłoszenia naruszenia do UODO w ciągu 72 godzin (art. 33 RODO).
8. Lista kontrolna – zabezpieczenie WordPressa


| Co | Jak często |
|---|---|
| aktualizacje WordPressa, wtyczek i motywów | co tydzień lub automatycznie |
| sprawdzenie kopii zapasowej i próbne odtworzenie | co kwartał |
| przegląd kont użytkowników i uprawnień | co kwartał |
| przegląd wtyczek – usunięcie nieużywanych | co pół roku |
| zmiana haseł do hostingu i FTP | przy zmianie współpracowników lub po incydencie |
| sprawdzenie ważności SSL i działania przekierowań | automatyczny monitoring |
| kontrola Search Console (bezpieczeństwo, ręczne działania) | co miesiąc |
9. Podsumowanie
Zabezpieczenie strony internetowej to proces, a nie jednorazowa czynność. Większość ataków na strony WordPress da się zatrzymać kilkoma nawykami: aktualizacjami, kopiami, 2FA i ograniczeniem liczby wtyczek. Do tego dochodzi kilka linijek w .htaccess i wp-config.php. Reszta to monitoring i plan, dzięki któremu ewentualna awaria potrwa godzinę, a nie tydzień.
Jeśli nie masz czasu pilnować tego samodzielnie, zajmę się tym za Ciebie. Opiekę nad stronami – aktualizacje, kopie, zabezpieczenia i reagowanie na incydenty – prowadzę w ramach usług informatycznych oraz przy każdej stronie internetowej, którą wykonuję. Napisz do mnie.


