
🔒 Jak wyłączyć REST API w WordPress: 4 sposoby 2026
Czym jest REST API i dlaczego warto je wyłączać
REST API w WordPressie, to wbudowany interfejs, za pomocą którego zewnętrzne aplikacje odczytują i modyfikują dane witryny. Zapytania trafiają do /wp-json/, odpowiedź przychodzi w formacie JSON. Pojawił się w WordPress 4.7 i od tego czasu jest domyślnie włączony na każdej stronie.
Dla deweloperów to wygodne: aplikacje mobilne, architektura Headless, integracje z zewnętrznymi serwisami. Jeśli jednak nie korzysta Pan/Pani z żadnego z tych rozwiązań, otwarte REST API pozostaje dziurą. Korzyść zerowa, ryzyko realne.
Konkretne zagrożenia:
- Wyciek użytkowników. Przez
/wp-json/wp/v2/userskażdy może uzyskać listę loginów. Następnie, łamanie haseł. - Scraping treści. Wpisy przez
/wp-json/wp/v2/postssą automatycznie pobierane i ponownie publikowane na obcych stronach. - Zbędne obciążenie. Każde zapytanie REST przechodzi pełny cykl WordPressa. Tysiąc botów na minutę i strona leży.
Poniżej cztery sposoby na zamknięcie REST API: od wtyczki na jedno kliknięcie po blokadę serwerową. Proszę wybrać odpowiedni do swojej sytuacji.
💡 Szybki przegląd:
- Proszę zainstalować wtyczkę Disable WP REST API: 30 000+ aktywnych instalacji, brak ustawień, działa natychmiast po aktywacji.
- Proszę skonfigurować ograniczenia w Solid Security: jeśli wtyczka bezpieczeństwa jest już na stronie, przełącznik REST API znajduje się w sekcji Advanced.
- Proszę dodać kod do functions.php: dla tych, którzy nie chcą instalować osobnej wtyczki dla jednego filtra, snippet na
rest_authentication_errors. - Proszę dodać regułę w.htaccess: blokada na poziomie serwera Apache, twarda metoda bez wyjątków.
Sposób 1: Wtyczka Disable WP REST API, na jedno kliknięcie
Najprostsza i najbezpieczniejsza metoda. Wtyczka Disable WP REST API na WordPress.org robi dokładnie jedną rzecz: zamyka REST API dla wszystkich niezalogowanych do panelu administracyjnego. Autoryzowani użytkownicy pracują normalnie, edytor bloków, inne wtyczki, wszystko funkcjonuje.
Instalacja: Wtyczki → Dodaj nową, w wyszukiwaniu „Disable WP REST API", zainstalować i aktywować. Wtyczka waży 4 KB i zaczyna działać od razu. Nie ma żadnych ustawień.
Weryfikacja: proszę wylogować się z panelu i otworzyć w przeglądarce https://вашсайт.ru/wp-json/. Zobaczy Pan/Pani komunikat: {"code":"rest_login_required","message":"REST API restricted to authenticated users.","data":{"status":401}}. Oznacza to, że REST API jest zamknięte dla zewnętrznych zapytań.
Twórca wtyczki, Jeff Starr, 15 lat w WordPressie, autor kilku książek na ten temat. Kod jest otwarty, wtyczka aktualizowana regularnie: na lipiec 2026, wersja 2.6.8, przetestowana aż do WordPress 7.0.2.
Plusy:
- Instalacja w minutę, brak ustawień
- 4 KB kodu, nie wpływa na szybkość strony
- Nie rusza panelu administracyjnego i edytora bloków
- 30 000+ aktywnych instalacji, ocena 4,8 na WordPress.org
Minusy:
- Blokuje tylko niezalogowanych, zarejestrowany użytkownik widzi REST API w całości
- Brak granularnych ustawień w wersji darmowej (wersja Pro REST Pro Tools dodaje filtrowanie według ról i IP)
Cena: Free. Wersja Pro REST Pro Tools, na stronie twórcy.
Pobrać: 🔗 Disable WP REST API na WordPress.org
Sposób 2: Ograniczenie przez Solid Security
Jeśli ma Pan/Pani już zainstalowany Solid Security (dawniej iThemes Security), osobna wtyczka do REST API nie jest potrzebna. W ustawieniach bezpieczeństwa jest gotowy przełącznik.
Ścieżka: Security → Settings → Advanced → WordPress REST API. Z rozwijanej listy proszę wybrać „Restricted Access", REST API będzie dostępne tylko dla autoryzowanych użytkowników.

Przy okazji proszę sprawdzić ustawienia XML-RPC w tej samej sekcji. Jeśli nie korzysta Pan/Pani z aplikacji mobilnej WordPress i nie łączy Jetpack, proszę je również wyłączyć. Dwa interfejsy, które rzadko są potrzebne, a często atakowane.
Plusy:
- Nie potrzeba osobnej wtyczki, funkcja jest już wbudowana w Solid Security
- Interfejs z objaśnieniami, nie trzeba zaglądać do kodu
- Przy okazji konfiguruje się XML-RPC
Minusy:
- Działa tylko, jeśli już korzysta Pan/Pani z Solid Security (instalowanie go osobno tylko po to jest zbędne)
- Darmowa wersja zamyka REST API całkowicie dla niezalogowanych, bez wyjątków dla poszczególnych endpointów
Pobrać: 🔗 Solid Security na WordPress.org
Sposób 3: Kod w functions.php, bez wtyczek
Jeśli nie chce Pan/Pani instalować wtyczki dla jednego filtra, oto snippet, który robi to samo. Proszę dodać go do functions.php motywu potomnego lub przez wtyczkę Code Snippets.
Przed edycją proszę zrobić backup strony. Błąd w functions.php powoduje biały ekran śmierci, bez dostępu do panelu administracyjnego naprawa będzie możliwa tylko przez FTP.
1 /** 2 * Закриваємо REST API для неавторизованих користувачів. 3 * Авторизовані працюють з API як зазвичай. 4 */ 5 add_filter('rest_authentication_errors', function($access) { 6 if (! is_user_logged_in()) { 7 return new WP_Error( 8 'rest_forbidden', 9 __('REST API restricted to authenticated users.', 'textdomain'), 10 array('status' => 403) 11 ); 12 } 13 return $access; 14 });
Co tu się dzieje. Filtr rest_authentication_errors uruchamia się przy każdym zapytaniu REST. is_user_logged_in() sprawdza, czy odwiedzający jest zalogowany. Jeśli nie, zwracany jest WP_Error z kodem 403 i WordPress nie przepuszcza zapytania dalej. Jeśli zalogowany, API działa bez ograniczeń.
Po dodaniu kodu proszę sprawdzić wynik: otworzyć /wp-json/ w trybie incognito. Powinien zostać zwrócony błąd 403.
Ważne. Stary filtr rest_enabled został usunięty z jądra WordPressa. Snippety z add_filter('rest_enabled', '_return_false'), które można znaleźć w starych poradnikach, nie działają począwszy od WordPress 5.0. Proszę używać wyłącznie rest_authentication_errors.
Sposób 4: Blokada przez.htaccess, na poziomie serwera
Radykalna metoda. Reguła w .htaccess blokuje zapytania do /wp-json/ jeszcze przed uruchomieniem WordPressa. Serwer Apache zwraca 403, nie dochodząc do PHP.
Jest odpowiednia, gdy:
- REST API na pewno nie jest potrzebne w żadnej postaci, ani Panu/Pani, ani wtyczkom;
- serwer działa na Apache (dla Nginx regułę pisze się przez blok
location); - jest Pan/Pani gotów edytować konfigurację serwera.
Proszę dodać do .htaccess w katalogu głównym strony:
1 <IfModule mod_rewrite.c> 2 RewriteEngine On 3 RewriteCond %{REQUEST_URI} ^/wp-json/ [NC] 4 RewriteRule .* - [F] 5 </IfModule>
Reguła działa na każdy URL zaczynający się od /wp-json/. Flaga [F] oznacza 403 Forbidden, flaga [NC] sprawia, że porównanie nie uwzględnia wielkości liter.
Koniecznie proszę zrobić kopię .htaccess przed edycją. Błąd składni kładzie całą stronę z błędem 500.
Główny minus podejścia: blokowane są wszystkie zapytania REST bez wyjątków. Jeśli po edycji przestał działać formularz kontaktowy (Contact Form 7 używa REST API), proszę wrócić do sposobu 1 lub 3.
Proszę obejrzeć 6-minutowy przegląd ryzyk REST API od Davida McAllena: pokazuje on realne zapytania do /wp-json/ i demonstruje obie wtyczki w działaniu.
⁉️🤔 Często zadawane pytania
Czy trzeba wyłączać REST API na każdej stronie?
Nie. Jeśli korzysta Pan/Pani z aplikacji mobilnej WordPress, edytora bloków (Gutenberg) lub wtyczek takich jak Contact Form 7 i WooCommerce, REST API jest im potrzebne. W takim przypadku lepiej nie wyłączać go całkowicie, a skonfigurować ograniczenia według ról.
Wyłączać REST API warto na stronach, gdzie nie jest ono świadomie używane: blogi na klasycznym edytorze, landing pages, wizytówki. Na takich projektach otwarte
/wp-json/nie daje nic poza ryzykiem. Dwie minuty na instalację wtyczki Disable WP REST API i wektor ataku jest zamknięty.
Jak sprawdzić, czy REST API jest naprawdę wyłączone?
Proszę otworzyć w przeglądarce https://вашсайт.ru/wp-json/ w trybie incognito (musi być Pan/Pani wylogowany). Jeśli widzi Pan/Pani błąd 401 lub 403, REST API jest zamknięte. Jeśli wyświetla się JSON z danymi, ochrona nie działa, proszę sprawdzić ustawienia.
Wiersz poleceń też jest odpowiedni:
curl -I https://вашсайт.ru/wp-json/wp/v2/users. Kod odpowiedzi 200 oznacza, że lista użytkowników jest udostępniana publicznie, to sygnał alarmowy, ochrona wymaga dostrojenia.
Czy wyłączenie REST API zepsuje edytor bloków?
Nie, jeśli używa Pan/Pani sposobów 1-3. Wtyczka Disable WP REST API, Solid Security i snippet na rest_authentication_errors przepuszczają autoryzowanych użytkowników. Edytor bloków działa, jest Pan/Pani przecież zalogowany do panelu.
Sposób 4 (.htaccess) to wyjątek. Blokada serwerowa odcina wszystkich bez wyjątku i edytor bloków przestanie działać. Jeśli po edycji
.htaccesspanel administracyjny się zepsuł, proszę wrócić do sposobu 1 lub 3.
Co jest bezpieczniejsze: wtyczka czy kod w functions.php?
Z punktu widzenia ochrony oba warianty są równoważne, wykorzystują ten sam mechanizm WordPressa. Różnica leży w wygodzie i utrzymaniu.
Wtyczka Disable WP REST API aktualizuje się automatycznie, nie zależy od motywu i nie znika przy zmianie szablonu. Kod w
functions.phpjest dla tych, którzy zasadniczo nie instalują wtyczek dla jednej funkcji. Proszę wybrać zgodnie ze swoim podejściem do administrowania, na bezpieczeństwo to nie wpływa.
Czy można zamknąć tylko endpoint /users, a resztę zostawić?
Można, ale to już precyzyjna konfiguracja. Darmowe narzędzia z artykułu blokują REST API całkowicie dla niezalogowanych.
Jeśli trzeba zostawić jedne endpointy i zamknąć inne, proszę użyć REST Pro Tools (wersja Pro wtyczki Disable WP REST API) lub filtra
rest_endpointswfunctions.php. Trzeba będzie jawnie wymienić dozwolone trasy, to zadanie na pół godziny, jeśli zna Pan/Pani strukturę WordPress REST API.
Zamknął Pan/Pani REST API, co dalej?
REST API to tylko jeden wektor ataku. Zamykając go, usunął Pan/Pani najprostszy punkt wejścia dla botów, ale nie zastępuje to pełnowartościowej ochrony.
Krótko mówiąc: sposób 1 (wtyczka Disable WP REST API) rozwiązuje zadanie w dwie minuty. Zainstalowana, sprawdzone /wp-json/ w incognito, upewnienie się, że formularz kontaktowy działa, gotowe. Ryzyko zmalało.
Następna warstwa to firewall i ochrona przed brute force. Proszę zacząć od darmowego Solid Security: zamknie ono i REST API, i XML-RPC, i łamanie haseł w jednym interfejsie. Jaką wtyczkę bezpieczeństwa ma Pan/Pani zainstalowaną, proszę napisać w komentarzach.


