Cum blochezi enumerarea utilizatorilor în WordPress (?author și REST API)
Numele contului cu care te autentifici în WordPress ar trebui să rămână privat. O instalare standard, însă, îl dezvăluie public, fără să ceară nimănui permisiunea, iar de aici pornesc majoritatea atacurilor de tip brute-force. Blocarea enumerării utilizatorilor în WordPress este una dintre cele mai simple și mai eficiente măsuri de securitate pe care le poți aplica astăzi: fără plugin-uri grele și fără să strici ceva din site.
În continuare îți arăt exact cum descoperă atacatorii numele tău de login prin ?author=N și prin REST API, de ce contează acest lucru și cum închizi ambele portițe definitiv.
Ce înseamnă enumerarea utilizatorilor
Enumerarea este procesul prin care cineva obține lista de conturi valide de pe site-ul tău. În momentul în care atacatorul cunoaște numele exact de login, mai are nevoie doar de parolă — practic, jumătate din muncă e deja făcută pentru el.
Un nume de utilizator descoperit înseamnă că toate încercările automate de login se pot concentra pe o singură țintă reală, în loc să ghicească orbește. WordPress expune aceste nume prin trei canale binecunoscute:
- Parametrul
?author=N— accesândsite.ro/?author=1ești redirecționat automat spre/author/nume-real/. - REST API — adresa
site.ro/wp-json/wp/v2/usersreturnează în format JSON lista autorilor, cu slug și nume afișat. - Arhivele și feed-urile de autor — afișează frecvent numele complet lângă articolele publicate.
Cum funcționează atacul prin ?author=N
Fiecare utilizator WordPress are un ID numeric. Administratorul primește de obicei ID-ul 1. Când cineva deschide site.ro/?author=1, WordPress caută autorul cu acel ID și face un redirect 301 către arhiva lui, a cărei adresă conține slug-ul — de multe ori chiar numele de login.
Un atacator poate parcurge automat ID-urile de la 1 la 50 în câteva secunde și își construiește o listă completă de conturi. Nu are nevoie de cunoștințe tehnice avansate: există scripturi gata făcute care fac exact acest lucru, la scară, pe mii de site-uri simultan.
REST API: portița mai puțin cunoscută
Din WordPress 4.7, REST API-ul este activ implicit. Endpoint-ul /wp-json/wp/v2/users a fost gândit pentru aplicații legitime, dar pentru vizitatorii neautentificați returnează, fără filtrare, numele și slug-ul fiecărui autor care a publicat conținut.
Concret, chiar dacă blochezi ?author=N, un site lăsat pe setările implicite îți dă în continuare utilizatorii pe tavă printr-o simplă cerere în browser. De aceea cele două canale trebuie tratate împreună, nu pe rând.
Cum realizezi blocarea enumerării utilizatorilor în WordPress
Ai două intervenții de făcut. Le poți adăuga în functions.php al temei copil sau, mai bine, într-un mic plugin de securitate, ca să reziste la schimbarea temei.
1. Oprește redirectul ?author
Codul de mai jos blochează cererile care conțin parametrul author pentru vizitatorii nelogați:
add_action('template_redirect', function () {
if (!is_admin() && isset($_GET['author'])) {
wp_safe_redirect(home_url(), 301);
exit;
}
});
2. Ascunde utilizatorii din REST API
add_filter('rest_endpoints', function ($endpoints) {
unset($endpoints['/wp/v2/users']);
unset($endpoints['/wp/v2/users/(?P<id>[\d]+)']);
return $endpoints;
});
Astfel, cererile către lista de useri primesc un răspuns gol, iar aplicațiile tale autentificate din admin continuă să funcționeze normal. Recomandările oficiale de întărire a securității din documentația WordPress merg pe exact aceeași idee: expune cât mai puține informații publicului.
Dacă preferi să nu atingi codul, plugin-uri de securitate precum Wordfence au opțiuni dedicate pentru blocarea enumerării. Metoda prin cod rămâne însă cea mai ușoară: nu adaugă greutate, nu depinde de un serviciu extern și nu are ce să încetinească.
Verifică rezultatul și nu te opri aici
După ce ai aplicat codul, testează manual, direct din browser:
- Deschide
site.ro/?author=1— ar trebui să ajungi pe prima pagină, nu pe o arhivă de autor. - Deschide
site.ro/wp-json/wp/v2/users— ar trebui să vezi o listă goală sau o eroare de permisiune.
Blocarea enumerării nu îți face site-ul invulnerabil, dar elimină un pas important din recunoașterea făcută de atacatori și reduce zgomotul atacurilor automate. Combin-o cu parole puternice, limitarea încercărilor de login și autentificare în doi pași — despre care vorbim pe larg în pagina noastră de securitate WordPress.
Iar dacă nu ești sigur ce anume expune site-ul tău chiar acum, un audit gratuit îți arată exact ce portițe sunt deschise și în ce ordine merită închise. E cel mai rapid mod de a trece de la „poate sunt în regulă” la „știu sigur că sunt protejat”.
Citește și: Cloudflare pentru WordPress: ce face și cum îți protejează site-ul.


