Liigu sisu juurde
🔒 Kuidas WordPressi REST API keelata: 4 viisi 2026

🔒 Kuidas WordPressi REST API keelata: 4 viisi 2026

Mis on REST API ja miks see keelata

WordPressi REST API on sisseehitatud liides, mille kaudu välised rakendused saavad saidi andmeid lugeda ja muuta. Päringud lähevad aadressile /wp-json/, vastus tuleb tagasi JSON-vormingus. See ilmus WordPress 4.7-s ja on sellest ajast alates igal saidil vaikimisi lubatud.

See on arendajatele mugav: mobiilirakendused, peakomponendita arhitektuur, integratsioonid kolmandate osapoolte teenustega. Aga kui sa midagi eelnevast ei kasuta, on avatud REST API auk. Null kasu, reaalsed riskid.

Konkreetsed ohud:

  • Kasutajate loendamine. Läbi /wp-json/wp/v2/users saab igaüks kasutajanimede nimekirja. Järgmine samm, paroolide toore jõuga ründamine.
  • Sisu kraapimine. Postitused läbi /wp-json/wp/v2/posts haaratakse automaatselt ja avaldatakse teistel saitidel uuesti.
  • Asjatu koormus. Iga REST-päring läbib täieliku WordPressi tsükli. Tuhat botti minutis ja sait jookseb kokku.

Allpool on neli viisi REST API lukustamiseks: alates ühe klõpsuga pluginast kuni serveritaseme blokeeringuni. Vali see, mis sinu olukorda sobib.

💡 Kiirülevaade:

  • Paigalda Disable WP REST API plugin: 30 000+ aktiivset paigaldust, seadeid pole, hakkab kohe pärast aktiveerimist tööle.
  • Seadista piirang Solid Securitys: kui turvaplugin on juba saidil, on REST API lüliti jaotises Advanced.
  • Lisa kood faili functions.php: neile, kes ei taha ühe filtri jaoks eraldi pluginat, kasutades rest_authentication_errors koodijuppi.
  • Lisa reegel faili.htaccess: blokeering Apache serveri tasemel, karm meetod ilma eranditeta.

Meetod 1: Disable WP REST API plugin, üks klõps

Lihtsaim ja ohutuim meetod. Disable WP REST API plugin WordPress.org-is teeb täpselt üht asja: sulgeb REST API kõigile, kes pole administraatoriliidesesse sisse logitud. Autenditud kasutajad töötavad nagu tavaliselt, plokkredaktor, teised pluginad, kõik toimib.

Paigaldamine: Plugins → Add New, otsi "Disable WP REST API", paigalda ja aktiveeri. Plugin kaalub 4 KB ja hakkab kohe tööle. Seadeid ei ole.

Kontrollimine: logi administraatoriliidesest välja ja ava brauseris https://вашсайт.ru/wp-json/. Näed teadet: {"code":"rest_login_required","message":"REST API restricted to authenticated users.","data":{"status":401}}. See tähendab, et REST API on välistele päringutele suletud.

Plugina autor Jeff Starr on 15 aastat WordPressiga tegelenud ja mitme selleteemalise raamatu autor. Kood on avatud, pluginat uuendatakse regulaarselt: 2026. aasta juuli seisuga versioon 2.6.8, testitud kuni WordPress 7.0.2.

Plussid:

  • Paigaldamine võtab minuti, seadeid pole
  • 4 KB koodi, ei mõjuta saidi kiirust
  • Ei puuduta administraatoriliidest ega plokkredaktorit
  • 30 000+ aktiivset paigaldust, hinnang 4,8 WordPress.org-is

Miinused:

  • Blokeerib ainult autentimata kasutajaid, sisselogitud kasutaja näeb täielikku REST API-t
  • Tasuta versioonis pole granuleeritud seadeid (Pro versioon REST Pro Tools lisab filtreerimise rolli ja IP järgi)

Hind: Tasuta. Pro versioon REST Pro Tools arendaja saidil.

Allalaadimine: 🔗 Disable WP REST API WordPress.org-is

Meetod 2: Piirang Solid Security kaudu

Kui sul on juba Solid Security (endine iThemes Security) paigaldatud, ei vaja sa REST API jaoks eraldi pluginat. Turbeseadetes on olemas valmis lüliti.

Tee: Security → Settings → Advanced → WordPress REST API. Vali rippmenüüst "Restricted Access", REST API on saadaval ainult autenditud kasutajatele.

Samuti kontrolli samas jaotises XML-RPC seadet. Kui sa ei kasuta WordPressi mobiilirakendust ega ühenda Jetpacki, keela seegi. Kaks liidest, mida on harva vaja, kuid mida sageli rünnatakse.

Plussid:

  • Pole vaja eraldi pluginat, funktsioon on juba Solid Securitysse sisse ehitatud
  • Selgitustega liides, pole vaja koodi puutuda
  • XML-RPC seadistatakse samal ajal

Miinused:

  • Töötab ainult siis, kui sa juba kasutad Solid Securityt (ainult selleks paigaldamine on liialdus)
  • Tasuta versioon sulgeb REST API autentimata kasutajatele täielikult, ilma eranditeta üksikutele lõpp-punktidele

Allalaadimine: 🔗 Solid Security WordPress.org-is

Meetod 3: Kood failis functions.php, pluginaid pole

Kui sa ei taha ühe filtri jaoks pluginat paigaldada, siis siin on koodijupp, mis teeb sama asja. Lisa see oma alamteema functions.php faili või Code Snippets plugina kaudu.

Tee enne muutmist saidist varukoopia. Viga functions.php-s põhjustab valge surma ekraani ja ilma administraatori juurdepääsuta pead selle FTP kaudu parandama.

1/**
2 * Close REST API for unauthorized users.
3 * Authorized users work with API as usual.
4 */
5add_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});

Mis siin toimub. Filter rest_authentication_errors käivitub igal REST-päringul. is_user_logged_in() kontrollib, kas külastaja on sisse logitud. Kui ei, tagastatakse WP_Error koodiga 403 ja WordPress blokeerib päringu edasise töötlemise. Kui sisse logitud, töötab API piiranguteta.

Pärast koodi lisamist kontrolli tulemust: ava /wp-json/ inkognito režiimis. Peaks tagastatama 403 viga.

Oluline. Vana rest_enabled filter on WordPressi tuumast eemaldatud. Koodijupid add_filter('rest_enabled', '_return_false')-ga, mis ilmuvad vanades õpetustes, ei tööta alates WordPress 5.0-st. Kasuta ainult rest_authentication_errors.

Meetod 4: Blokeering.htaccess kaudu, serveri tasemel

Radikaalne meetod. Reegel failis .htaccess blokeerib päringud aadressile /wp-json/ enne, kui WordPress üldse käivitub. Apache server tagastab 403, jõudmata kunagi PHP-ni.

Sobib, kui:

  • REST API-t pole kindlasti mingil kujul vaja, ei sulle ega pluginatele;
  • server töötab Apache peal (Nginxi jaoks kirjutatakse reegel location ploki kaudu);
  • sa oled serveri konfiguratsiooni muutmisega sina peal.

Lisa saidi juurkaustas olevasse .htaccess faili:

1<IfModule mod_rewrite.c>
2RewriteEngine On
3RewriteCond %{REQUEST_URI} ^/wp-json/ [NC]
4RewriteRule .* - [F]
5</IfModule>

Reegel rakendub igale URL-ile, mis algab /wp-json/. Lipp [F] tähendab 403 Forbidden, lipp [NC] muudab võrdluse tõstutundetuks.

Tee kindlasti koopia .htaccess failist enne muutmist. Süntaksiviga viib kogu saidi 500 veaga maha.

Selle lähenemise peamine miinus: kõik REST-päringud blokeeritakse eranditult. Kui pärast muudatust lakkab mõni kontaktvorm töötamast (Contact Form 7 kasutab REST API-t), mine tagasi meetodi 1 või 3 juurde.

Vaata David McAlleni 6-minutilist ülevaadet REST API riskidest: ta näitab reaalseid päringuid aadressile /wp-json/ ja demonstreerib mõlemat pluginat töös.

⁉️🤔 KKK

Kas ma pean REST API igal saidil keelama?

Ei. Kui sa kasutad WordPressi mobiilirakendust, plokkredaktorit (Gutenberg) või pluginaid nagu Contact Form 7 ja WooCommerce, vajavad need REST API-t. Sel juhul on parem seda mitte täielikult keelata, vaid seadistada rollipõhine piirang.

Sa peaksid REST API keelama saitidel, kus seda sihipäraselt ei kasutata: klassikalise redaktoriga blogid, maandumislehed, visiitkaardisaidid. Sellistel projektidel ei paku avatud /wp-json/ midagi peale riskide. Kaks minutit Disable WP REST API plugina paigaldamiseks ja ründevektor on suletud.

Kuidas ma kontrollin, kas REST API on tegelikult keelatud?

Ava https://вашсайт.ru/wp-json/ oma brauseris inkognito režiimis (sa pead olema välja logitud). Kui näed 401 või 403 viga, on REST API suletud. Kui kuvatakse JSON-andmeid, ei tööta kaitse, kontrolli oma seadeid.

Käsurida töötab samuti: curl -I https://вашсайт.ru/wp-json/wp/v2/users. Vastuse kood 200 tähendab, et kasutajate nimekirja serveeritakse avalikult, see on punane lipp, kaitset tuleb täpsustada.

Kas REST API keelamine lõhub plokkredaktori?

Ei, kui sa kasutad meetodeid 1-3. Disable WP REST API plugin, Solid Security ja rest_authentication_errors koodijupp lasevad kõik autenditud kasutajad läbi. Plokkredaktor töötab, kuna sa oled administraatoriliidesesse sisse logitud.

Meetod 4 (.htaccess) on erand. Serveritaseme blokeering lõikab kõiki vahet tegemata ja plokkredaktor lakkab töötamast. Kui administraatoriliides läheb pärast .htaccess muutmist katki, mine tagasi meetodi 1 või 3 juurde.

Kumb on turvalisem: plugin või kood failis functions.php?

Kaitse seisukohast on mõlemad variandid samaväärsed, nad kasutavad sama WordPressi mehhanismi. Erinevus on mugavuses ja haldamises.

Disable WP REST API plugin uueneb automaatselt, ei sõltu teemast ega kao, kui sa malli vahetad. Kood failis functions.php on neile, kes on põhimõtteliselt ühe funktsiooni jaoks pluginate paigaldamise vastu. Vali oma haldusviisi järgi, see ei mõjuta turvalisust.

Kas ma saan sulgeda ainult /users lõpp-punkti ja jätta ülejäänu avatuks?

Saad, kuid see on peenhäälestuse ülesanne. Selle artikli tasuta tööriistad blokeerivad REST API autentimata kasutajatele täielikult.

Kui sul on vaja mõned lõpp-punktid avatuna hoida ja teised sulgeda, kasuta REST Pro Tools (Disable WP REST API plugina Pro versioon) või rest_endpoints filtrit failis functions.php. Sa pead selgesõnaliselt loetlema lubatud marsruudid, see on pooletunnine ülesanne, kui tunned WordPressi REST API struktuuri.

Oled REST API lukustanud, mis edasi?

REST API on vaid üks ründevektor. Selle sulgemisega eemaldasid kõige lihtsama sisenemispunkti bottidele, kuid see ei asenda täisväärtuslikku kaitset.

Lühidalt: meetod 1 (Disable WP REST API plugin) lahendab probleemi kahe minutiga. Paigalda see, kontrolli /wp-json/ inkognito režiimis, veendu, et su kontaktvorm töötab, ja valmis. Riskid on vähendatud.

Järgmine kiht on tulemüür ja toore jõu rünnete kaitse. Alusta tasuta Solid Securityst: see sulgeb REST API, XML-RPC ja paroolide toore jõuga ründamise ühes liideses. Millist turvapluginat sa kasutad, anna meile kommentaarides teada.