Securizarea unui site WordPress de la zero: ghidul complet, pas cu pas

Există zeci de articole despre „cum securizezi WordPress”, majoritatea recomandând un plugin și oprindu-se acolo. Problema cu abordarea asta: securitatea reală nu e un produs pe care îl instalezi o dată, e un sistem de straturi care se susțin reciproc. Un plugin excelent de securitate, instalat pe un site cu parole slabe și plugin-uri abandonate, oferă o iluzie de protecție, nu protecție reală.

Articolul ăsta e gândit ca un ghid de referință complet — parcurge, nivel cu nivel, tot ce înseamnă securizarea temeinică a unui site WordPress, de la fundația de hosting până la planul de răspuns în caz de incident. Dacă administrezi singur un site, poți folosi secțiunile ca pe un checklist. Dacă vrei aprofundare pe un subiect anume, articolul face trimitere la ghidurile noastre dedicate, mai detaliate, pentru fiecare temă majoră.

De ce securitatea e un sistem, nu un produs

Gândește-te la securitatea unui site ca la securitatea unei case. Un lacăt bun pe ușa principală ajută, dar nu contează dacă fereastra de la subsol rămâne deschisă, dacă oricine poate ghici codul de alarmă, sau dacă nu ai niciun mod de a ști că cineva a intrat deja. Fiecare nivel de protecție acoperă un tip diferit de risc, iar un atacator are nevoie doar de o singură ușă deschisă, nu de toate.

Structura de mai jos urmează exact această logică — de la fundația pe care stă totul, până la planul pentru momentul în care, în ciuda tuturor măsurilor, ceva tot merge prost.

Nivelul 1: Fundația — hosting și server

Nimic din ce faci la nivel de WordPress nu compensează un hosting slab configurat. Verifică, înainte de orice altceva:

Certificat SSL activ pe tot site-ul. Fără excepții, fără pagini rămase pe HTTP. Un certificat SSL nu doar criptează datele în tranzit — e și un semnal de încredere pentru vizitatori și un factor de clasare pentru Google. Dacă vrei detalii complete despre cum funcționează și de ce contează, avem un ghid dedicat certificatelor SSL.

Versiune PHP actuală. WordPress 7.0 recomandă PHP 8.3 sau mai recent. Versiunile vechi de PHP nu doar rulează mai lent — nu mai primesc patch-uri de securitate, ceea ce le transformă în vulnerabilități permanente.

Izolare între conturi (dacă hosting-ul e partajat). Pe un hosting shared prost configurat, un site compromis de pe același server poate afecta alte conturi. Verifică dacă furnizorul tău oferă izolare reală (CloudLinux sau echivalent), nu doar separare superficială.

Firewall la nivel de server. Dincolo de orice firewall aplicativ WordPress, un firewall la nivel de server sau rețea (oferit adesea de furnizorul de hosting sau de un serviciu ca Cloudflare) filtrează traficul malițios înainte să ajungă măcar la aplicație.

Backup automat la nivel de hosting, ca strat suplimentar. Multe soluții de hosting oferă backup zilnic la nivel de cont, independent de orice plugin instalat pe WordPress. Nu ar trebui să fie singura ta soluție de backup, dar funcționează ca o plasă de siguranță suplimentară dacă soluția principală eșuează silențios.

Verifică politica de securitate a furnizorului. Un hosting serios ar trebui să aibă propriile scanări de malware la nivel de server, izolare între conturi și un proces clar de notificare dacă detectează activitate suspectă pe contul tău. Dacă furnizorul tău nu poate răspunde clar la întrebarea „ce faceți dacă site-ul meu e compromis”, e un semnal de alarmă în sine.

Nivelul 2: Nucleul WordPress

Actualizări la zi, întotdeauna. Fiecare actualizare de securitate amânată e o vulnerabilitate documentată public, pe care orice atacator o poate citi în notele de lansare. Am scris pe larg despre de ce actualizările nu sunt opționale și cum le aplici fără riscul de a strica site-ul — testare pe staging, backup înainte de orice actualizare majoră.

Ascunde versiunea de WordPress. Implicit, WordPress expune numărul versiunii în codul sursă al paginii. Roboții de scanare folosesc exact această informație pentru a ținti site-uri cu versiuni vulnerabile cunoscute. Eliminarea acestei informații (printr-un plugin sau o linie de cod în functions.php) nu oprește un atac direcționat, dar reduce vizibilitatea pentru scanările automate.

Dezactivează editorul de fișiere din admin. WordPress permite implicit editarea directă a fișierelor de temă și plugin din panoul de administrare. Dacă un atacator obține totuși acces la un cont de administrator, acest editor devine un instrument perfect pentru injectarea de cod malițios. Dezactivarea lui (constanta `DISALLOW_FILE_EDIT` în wp-config.php) elimină această cale de atac suplimentară.

Chei de securitate (salts) unice și actuale. Fișierul wp-config.php conține un set de chei criptografice care securizează cookie-urile de autentificare. Regenerarea lor periodică (posibilă gratuit prin generatorul oficial WordPress) invalidează orice sesiune furată anterior.

Nivelul 3: Autentificare — ușa principală

Pagina de login e, statistic, cea mai atacată componentă a oricărui site WordPress — pentru că e aceeași pentru milioane de site-uri și pentru că un acces reușit acolo înseamnă control total. Am detaliat separat cum protejezi pagina de login, dar esențialul:

Autentificare în doi factori (2FA), obligatorie pentru toate conturile de administrator. Chiar dacă o parolă e furată sau ghicită, 2FA blochează accesul real fără al doilea factor. E, probabil, cea mai eficientă măsură unică din tot acest ghid.

Parole puternice, unice, gestionate printr-un manager de parole. Nu parole reutilizate de pe alte site-uri, nu variații previzibile ale aceleiași parole.

Niciun cont cu username „admin”. Jumătate din informația necesară unui atac de tip brute-force (username-ul) nu ar trebui să fie niciodată previzibilă.

Limitarea încercărilor de autentificare. Blochează automat o adresă IP după un număr de încercări eșuate consecutive, oprind atacurile automate de tip brute-force înainte să aibă șansa statistică de reușită.

Protecție suplimentară pe wp-login.php și wp-admin. Restricționarea accesului prin adresă IP (dacă echipa lucrează de pe adrese fixe) sau printr-un strat suplimentar de autentificare la nivel de server adaugă o barieră înainte ca cineva să ajungă măcar la formularul de login WordPress.

Deconectare automată după inactivitate. O sesiune de administrator rămasă deschisă pe un calculator la care mai are acces și altcineva (birou partajat, calculator public, dispozitiv pierdut) e o vulnerabilitate reală, adesea ignorată. Configurarea unui timeout de sesiune reduce fereastra de expunere.

Revizuirea periodică a conturilor cu acces. Un fost angajat sau colaborator care încă are cont de administrator, mult timp după ce relația de lucru s-a încheiat, e un risc care se acumulează silențios. O revizuire trimestrială a listei de utilizatori și a rolurilor lor prinde exact acest gen de situații înainte să devină o problemă.

Nivelul 4: Plugin-uri și teme — cea mai frecventă poartă de intrare

Vulnerabilitățile din plugin-uri și teme reprezintă, de departe, cel mai comun vector de atac pe site-urile WordPress. Am scris un ghid detaliat despre ce plugin-uri să instalezi și ce să eviți, dar principiile de bază pentru securitate:

Doar plugin-uri și teme strict necesare. Fiecare plugin instalat e cod suplimentar care rulează pe site-ul tău și o suprafață de atac în plus. Dacă un plugin nu mai e folosit activ, dezinstalează-l — nu doar dezactivează-l.

Actualizate constant, de la surse oficiale. Niciodată versiuni „nulled” (piratate) — acestea sunt una dintre cele mai frecvente surse de malware, cu backdoors incluse deliberat în cod.

Verifică data ultimei actualizări înainte de instalare. Un plugin neactualizat de peste 12 luni e un semnal de alarmă — fie a fost abandonat de dezvoltator, fie nu mai e considerat prioritar, ambele scenarii crescând riscul de vulnerabilități nepatch-uite.

Verifică reputația și suportul activ. Numărul de instalări active, ratingul, și mai ales cât de repede răspunde dezvoltatorul la probleme raportate spun mult despre cât de serios e tratat pluginul respectiv. Un plugin cu mii de instalări dar fără nicio actualizare de securitate documentată de mult timp merită mai multă precauție decât unul mai mic, dar activ menținut.

Evită suprapunerile de funcționalitate. Două plugin-uri de securitate active simultan, sau două plugin-uri de cache, nu înseamnă protecție dublă — înseamnă adesea conflicte care pot, paradoxal, slăbi protecția reală prin comportamente neprevăzute.

Nivelul 5: Firewall aplicativ și scanare de malware

Un firewall aplicativ web (WAF) filtrează cererile malițioase înainte ca acestea să ajungă la codul WordPress — tentative de SQL injection, cross-site scripting, exploatări cunoscute. Combinat cu scanări periodice de malware, care verifică integritatea fișierelor și detectează cod suspect, acest nivel prinde amenințări pe care protecțiile de la nivelurile anterioare le-ar putea rata.

Pentru detectarea timpurie a malware-ului, monitorizarea integrității fișierelor (alertare la orice modificare neautorizată) e esențială — multe infecții rămân nedetectate săptămâni sau luni tocmai pentru că nimeni nu verifică activ dacă fișierele „curate” au rămas curate.

Nivelul 6: Baza de date

Schimbă prefixul implicit al tabelelor. Prefixul standard „wp_” e cunoscut de orice atacator; un prefix personalizat nu oprește un atac direcționat, dar elimină o categorie întreagă de exploatări automate care presupun prefixul implicit.

Credențiale unice și complexe pentru baza de date. Separate de orice altă parolă folosită pe site sau în altă parte.

Curățare periodică. Tabele de tranzit umflate (revizii de articole nelimitate, comentarii spam nefiltrate, date temporare ale unor plugin-uri dezinstalate) nu doar încetinesc site-ul — pot ascunde și date rămase de la instalări sau conturi vechi, uitate.

Nivelul 7: Permisiuni de fișiere

Permisiunile prea permisive pe fișiere și directoare (de exemplu 777 în loc de 644/755) permit modificări neautorizate mult mai ușor. Configurarea corectă a permisiunilor — de obicei 644 pentru fișiere și 755 pentru directoare, cu excepția fișierului wp-config.php, care ar trebui restricționat și mai strict — reduce semnificativ suprafața de atac în cazul în care un atacator obține totuși acces parțial.

Nivelul 8: Backup — plasa de siguranță finală

Indiferent cât de bine construiești primele șapte niveluri, backup-ul e ceea ce te salvează atunci când, în ciuda tuturor măsurilor, ceva tot merge prost. Am scris pe larg despre de ce majoritatea backup-urilor „configurate” nu funcționează de fapt atunci când ai nevoie de ele.

Regula 3-2-1: minimum trei copii ale datelor, pe cel puțin două tipuri diferite de stocare, cu cel puțin o copie păstrată în afara site-ului (extern).

Backup complet — fișiere și bază de date deopotrivă. Multe soluții fac backup doar la unul dintre cele două, ceea ce face restaurarea completă imposibilă.

Testare periodică prin restaurare reală. Un backup netestat e o presupunere, nu o garanție. Verifică, la interval regulat, că backup-ul chiar poate fi restaurat cu succes.

Nivelul 9: Monitorizare și alertare

Securitatea fără monitorizare înseamnă că afli despre un incident abia atunci când efectele devin vizibile — trafic scăzut, avertisment Google, reclamații de la clienți. Monitorizarea activă include: verificare de uptime (afli imediat dacă site-ul devine inaccesibil), scanări de securitate programate (nu doar la instalare, ci recurente), și verificarea periodică a jurnalelor de acces pentru tipare neobișnuite — autentificări din locații neobișnuite, volum mare de cereri de pe aceeași adresă IP, tentative repetate pe fișiere sensibile.

Nivelul 10: Planul de răspuns la incidente

Oricât de bine construiești primele nouă niveluri, pregătirea pentru scenariul „ceva a mers prost” separă un incident gestionat rapid de un dezastru prelungit. Un plan minim de răspuns include: cine e responsabil să acționeze, ce pași urmezi pentru izolarea și curățarea site-ului, cum restaurezi dintr-un backup curat dacă e necesar, și cum comunici cu clienții afectați dacă datele lor au fost expuse — ultimul aspect fiind și o obligație legală conform cerințelor GDPR, cu notificare către ANSPDCP în 72 de ore în caz de breach real.

Pentru semnele timpurii care indică un site deja compromis, acest ghid despre cele 7 semne ale unui site spart ajută la identificarea rapidă a problemei, înainte ca ea să se agraveze.

Un cuvânt despre factorul uman

Toate cele zece niveluri tehnice pot fi compromise printr-o singură greșeală umană — un email de phishing convingător, o parolă partajată neglijent, un acces acordat cuiva care nu mai are nevoie de el. Am scris despre cum recunoști tentativele de phishing specifice WordPress, pentru că securitatea tehnică fără educarea echipei rămâne incompletă.

Specific pentru magazine WooCommerce

Dacă site-ul tău procesează plăți și date de clienți, nivelul de risc crește proporțional. Riscuri specifice — card skimming (Magecart), fraudarea comenzilor, preluarea conturilor de clienți — cer măsuri suplimentare față de un site de prezentare simplu. Am detaliat separat securitatea specifică magazinelor WooCommerce, inclusiv recomandarea esențială de a procesa plățile printr-un gateway extern, nu printr-un formular încorporat pe site.

Cât timp și cât cost real presupune fiecare nivel

Un motiv frecvent pentru care securitatea rămâne amânată: pare un proiect uriaș, nedefinit, fără un punct clar de sfârșit. În realitate, implementarea completă a celor zece niveluri, pentru un site mediu, se împarte relativ previzibil.

Configurare inițială (o singură dată): nivelurile 1, 2, 6 și 7 (hosting, nucleu WordPress, bază de date, permisiuni) necesită, de obicei, între două și patru ore de lucru concentrat pentru un site existent, sau se rezolvă din start dacă site-ul e nou. Nu sunt sarcini recurente — odată configurate corect, rămân stabile, cu verificări ocazionale.

Configurare cu verificare periodică: nivelurile 3, 4 și 5 (autentificare, plugin-uri, firewall) cer o oră-două de configurare inițială, plus verificări lunare de câteva minute — mai ales pentru actualizarea plugin-urilor și revizuirea conturilor cu acces.

Procese continue: nivelurile 8 și 9 (backup și monitorizare) nu sunt niciodată „gata” — sunt procese care rulează constant în fundal, cu verificări active recomandate lunar (testarea unei restaurări de backup) sau săptămânal (verificarea alertelor de monitorizare).

Pregătire, nu execuție: nivelul 10 (planul de răspuns la incidente) se scrie o dată, într-o oră sau două de reflecție structurată, și se revizuiește anual sau după orice incident real.

Per total, un site pornit de la zero, fără nicio măsură de securitate, poate ajunge la toate cele zece niveluri implementate corect în aproximativ șase până la zece ore de muncă distribuită pe câteva săptămâni — nu un proiect de luni de zile, cum pare adesea din exterior. Costul financiar variază după alegerile făcute (plugin-uri gratuite vs. premium, monitorizare manuală vs. automatizată), dar nucleul esențial — actualizări, 2FA, backup, parole corecte — nu costă nimic în afară de timp.

Greșeli frecvente, chiar la proprietari atenți

Câteva tipare pe care le întâlnim des, chiar la oameni care cred sincer că au un site securizat:

„Am activat 2FA doar pentru mine, nu și pentru restul echipei.” Un singur cont neprotejat prin 2FA e suficient pentru un atacator determinat — protecția e la fel de puternică precum cea mai slabă verigă din lanț.

„Backup-ul rulează automat, deci sunt acoperit.” Configurarea automată nu garantează funcționarea continuă. Am văzut backup-uri care s-au oprit silențios cu luni în urmă — spațiu de stocare plin, credențiale expirate către serviciul extern — fără ca nimeni să observe, exact pentru că nimeni nu verifică activ.

„Am plugin de securitate, deci sunt protejat.” Un plugin instalat cu setările implicite oferă o fracțiune din protecția reală posibilă. Firewall-ul trebuie activat explicit, regulile trebuie actualizate, alertele trebuie să ajungă la cineva care le verifică.

„Site-ul meu e prea mic ca să fie o țintă.” Marea majoritate a atacurilor sunt automate, nu manuale — roboții scanează tot internetul, fără să evalueze mărimea sau importanța unui site înainte de a exploata o vulnerabilitate găsită.

„Am schimbat parola acum doi ani, deci sunt în siguranță.” Parolele nu „expiră” automat ca risc dacă nu au fost niciodată expuse, dar practica de a le roti periodic, mai ales pentru conturile critice, rămâne o măsură de precauție utilă — mai ales dacă acea parolă a fost folosită și în altă parte, unde ar fi putut fi compromisă printr-un breach necunoscut ție.

Checklist final — toate cele zece niveluri, pe scurt

Pentru referință rapidă, iată tot ghidul condensat:

1. Hosting: SSL activ complet, PHP actualizat, izolare de cont, firewall la nivel de server
2. Nucleu WordPress: actualizări la zi, versiune ascunsă, editor de fișiere dezactivat, chei de securitate regenerate
3. Autentificare: 2FA obligatoriu, parole unice puternice, fără username „admin”, limitare încercări login
4. Plugin-uri și teme: minimum necesar, actualizate, niciodată nulled, verificate înainte de instalare
5. Firewall aplicativ și scanare malware: activ și configurat, nu doar instalat
6. Bază de date: prefix schimbat, credențiale unice, curățare periodică
7. Permisiuni fișiere: configurate corect, wp-config.php restricționat suplimentar
8. Backup: regula 3-2-1, complet, testat periodic prin restaurare reală
9. Monitorizare: uptime, scanări recurente, verificare jurnale de acces
10. Plan de răspuns la incidente: roluri clare, proces de izolare și curățare, obligații de notificare GDPR

De unde începi, dacă pornești de la zero

Dacă toate cele zece niveluri par copleșitoare, prioritizează în această ordine: backup funcțional și testat (nivelul 8) — pentru că e plasa de siguranță pentru orice greșeală din celelalte niveluri —, apoi actualizări la zi și 2FA (nivelurile 2 și 3) — cele mai ieftine măsuri cu cel mai mare impact —, apoi restul, treptat. Securitatea perfectă de la prima zi nu e realistă; progresul constant, e.

Toate pachetele noastre de administrare WordPress acoperă integral aceste zece niveluri — actualizări testate, backup verificat, monitorizare activă, firewall configurat corect, și un proces clar de răspuns dacă ceva tot merge prost. De la 49 €/lună.

Vrei să știi exact la ce nivel de securitate se află site-ul tău acum, din aceste zece? Cere auditul gratuit — verificăm fiecare nivel și îți arătăm concret ce lipsește, fără obligații.