Security Pilot
Security Pilot este un plugin complet de securitate pentru WordPress care întărește site-ul împotriva atacurilor și vulnerabilităților uzuale. Aplică headere HTTP de securitate standard în industrie, protejează pagina de login de atacuri brute-force, blochează request-uri malițioase cu un firewall integrat, restricționează endpoint-urile sensibile din REST API și include un audit dintr-un click care acordă un grad de la A la F instalării.
Spre deosebire de suite-le de securitate bloated, Security Pilot este ușor și modular: activează doar protecțiile de care ai nevoie. Fiecare modul poate fi pornit independent, iar toate setările se gestionează din meniul de top-level Security Pilot din sidebar-ul de admin WordPress.

Puncte forte
- Headere HTTP de securitate — HSTS, Content-Security-Policy,
X-Frame-Options, X-Content-Type-Options, Referrer-Policy,
Permissions-Policy, X-XSS-Protection și eliminarea header-ului
X-Powered-By. - Protecție login — rate limiting configurabil, lockout-uri temporare și ban-uri permanente pentru contravenienții repetați, cu alerte opționale pe email.
- Firewall pe request-uri — detecție bazată pe pattern-uri pentru SQL injection, cross-site scripting (XSS), path traversal, remote file inclusion (RFI) și command injection.
- Protecție REST API — blochează accesul neautorizat la grupuri
de endpoint-uri sensibile precum
/wp/v2/users, WooCommerce, Jetpack,wp-site-health, Divi Builder și Elementor. - Hardening WordPress — dezactivează editorul de fișiere și XML-RPC, suprimă pingback-urile și trackback-urile, ascunde versiunea WordPress, elimină linkul RSD și manifestul Windows Live Writer.
- Rate limiter — throttling per IP pentru flood-uri de 404 și alte pattern-uri de request cu frecvență mare, cu un număr maxim de block-uri și o fereastră temporală rolling configurabile.
- Protecție formulare — limitează rata submisiilor de pe frontend, blochează domeniile de email disposable și prinde boții cu câmpuri honeypot ascunse și o verificare configurabilă a timpului minim de completare.
- Security Check — audit dintr-un click care acordă un grad de la A la F instalării și raportează statusul per verificare (PASS / WARNING / FAIL) pe hardening, expunere REST API, plugin-uri/teme învechite, setări de debug, editor de fișiere și multe altele.
- Access Rules și logging de atacuri — gestionează Blocked IPs, Whitelisted IPs și Whitelisted URLs dintr-un ecran cu trei taburi și intră în detaliu pe fiecare request blocat în Attack Log.
Cerințe
Security Pilot este gândit pentru site-uri WordPress moderne, self-hosted.
- O instalare WordPress funcțională, cu acces de administrator.
- O versiune de PHP suportată de release-ul tău curent de WordPress.
- HTTPS este puternic recomandat. Header-ul HSTS ar trebui activat doar când site-ul tău este accesibil prin TLS pe toate URL-urile, inclusiv pe subdomeniile pe care vrei să le acoperi.
- Permisiuni suficiente pentru a modifica headerele de răspuns HTTP. Pe majoritatea host-urilor managed funcționează out-of-the-box; în fața unor reverse proxy-uri sau CDN-uri, headerele pot avea nevoie să fie lăsate să treacă la edge.
Nu există servicii externe de configurat și nu sunt necesare chei API. Setările, log-urile și blocklists trăiesc în propria ta bază de date WordPress.
Instalare
- Descarcă ZIP-ul plugin-ului Security Pilot.
- În WordPress, deschide Plugins → Add New → Upload Plugin.
- Alege fișierul ZIP și apasă Install Now.
- Apasă Activate Plugin când upload-ul se termină.
- Deschide Security Pilot → Settings pentru a revizui modulele. Cele patru itemi de submeniu, în ordinea în care apar, sunt Security Check, Access Rules, Attack Log și Settings.
După activare, nicio protecție nu este pornită forțat — fiecare modul începe într-o stare cunoscută și poate fi pornit individual. Astfel este sigur să-l instalezi pe un site de producție și să introduci hardening-ul în pași mici, reversibili.
Configurare
Toată configurarea se face din Security Pilot → Settings. Pagina grupează setările pe module — fiecare modul este un card collapsible cu propriul toggle de activare și un număr mic de opțiuni.
Un card License de sus acceptă o cheie PILOT-XXXX-XXXX-XXXX-XXXX
(din confirmarea ta de comandă) și, când e verificată, activează
update-urile automate ale plugin-ului din feed-ul de release-uri GitHub.
Plugin-ul funcționează complet fără cheie; doar canalul de auto-update
este gate-uit.
Headere HTTP de securitate
Modulul de headere adaugă headere HTTP de răspuns bazate pe standarde la fiecare request servit prin WordPress. Pornește individual fiecare header în funcție de nevoile site-ului tău.
| Header | Valoare default | Scop |
|---|---|---|
X-Frame-Options | SAMEORIGIN | Previne clickjacking-ul împiedicând pagina să fie încărcată în frame-uri terțe. |
X-Content-Type-Options | nosniff | Oprește browserele să ghicească tipurile de conținut, atenuând atacurile de MIME confusion. |
X-XSS-Protection | 1; mode=block | Filtru XSS legacy pentru browserele vechi. |
Strict-Transport-Security | activ cu default-uri rezonabile | Forțează browserele să folosească HTTPS la vizitele viitoare. Activează-l doar când site-ul este integral pe HTTPS. |
Referrer-Policy | strict-origin-when-cross-origin | Limitează informația de referrer scursă către terți. |
Permissions-Policy | default-uri restrictive | Dezactivează feature-uri sensibile de browser (cameră, microfon, geolocație etc.) pe care site-ul nu le folosește. |
Content-Security-Policy | configurabil | Restricționează originile de la care pot încărca scripturi, stiluri, imagini și alte resurse. |
X-Powered-By | eliminat | Ascunde valoarea X-Powered-By generată de PHP sau de alte componente, care altfel ar anunța stack-ul tău server. |
Câteva note la configurarea headerelor:
- HSTS este permanent în browsere odată primit. Verifică faptul că
HTTPS funcționează peste tot — inclusiv
wwwși orice subdomeniu pe care plănuiești să-l incluzi — înainte să-l activezi. - Content-Security-Policy este cel mai puternic și cel mai intruziv header. Începe cu default-urile friendly pentru raportare, apoi strânge policy-ul după ce verifici consola browser-ului pentru resursele blocate pe paginile tale reale.
- Dacă site-ul tău stă în spatele unui CDN sau a unui reverse proxy care rescrie headere, asigură-te că acele edge-uri lasă valorile adăugate de Security Pilot să treacă neschimbate.
Protecție Login
Login Protection contorizează încercările de autentificare eșuate per adresă IP și aplică un lockout când e atinsă o limită. După un număr configurabil de lockout-uri, IP-ul poate fi ban-uit permanent.
Setări disponibile:
- Max failed attempts — numărul de login-uri eșuate de la un IP
înainte de a se declanșa un lockout. Acceptă valori de la
1la20. Default-ul5este un punct de plecare rezonabil. - Attempt window — fereastra temporală rolling, în minute, folosită
pentru a contoriza eșecurile. Acceptă valori de la
1la120. - Lockout duration — cât timp rămâne blocat un IP după lockout, în
minute. Acceptă valori de la
1la1440(24 de ore). - Permanent ban threshold — numărul de lockout-uri separate pe
care un IP le poate acumula înainte de a fi ban-uit permanent.
Acceptă valori de la
1la20. - Alerte pe email — când e activ, administratorul site-ului primește un email de fiecare dată când e detectat un atac și de fiecare dată când un IP este adăugat în blocklist.
- Ascunde mesajele de eroare detaliate — mesaje generice („credențiale invalide”) înlocuiesc mesajele default ale WordPress, împiedicând atacatorii să afle dacă un user există.
Protecția se aplică atât pentru wp-login.php, cât și pentru
endpoint-ul standard de autentificare XML-RPC atunci când XML-RPC
rămâne activ.
Firewall pe request-uri
Request Firewall inspectează request-urile de intrare pentru pattern-uri
malițioase și returnează un răspuns 403 Forbidden când găsește unul.
Pattern-urile de detecție sunt incluse și acoperă:
- SQL injection — payload-uri uzuale pe parametri de query, body-uri POST și cookies.
- Cross-site scripting (XSS) — semnături de atac reflected și stored.
- Path traversal — încercări în stil
../de a scăpa din document root. - Remote file inclusion (RFI) — referințe la URL-uri externe în contexte unde sunt așteptate căi locale.
- Command injection — metacaractere de shell în parametri care
pot ajunge la funcții de tip
system.
Firewall-ul nu are configurare per regulă. Este fie pornit, fie oprit. Request-urile blocate sunt înregistrate în log-ul de atacuri descris mai jos, inclusiv parametrul ofensator și regula care a declanșat blocarea.
Rate Limiter (protecție flood 404)
Site-urile sub probing brute-force generează sute de răspunsuri 404 per IP pe minut, căutând asset-uri ascunse de plugin-uri sau backup-uri de wp-config. Rate Limiter-ul plafonează acel trafic per IP sursă prin urmărirea hit-urilor 404 într-o fereastră rolling:
| Câmp | Default | Note |
|---|---|---|
| Max răspunsuri 404 înainte de blocare | 25 | Odată depășit, IP-ul este adăugat în lista Blocked IPs. |
| Fereastră temporală (secunde) | 60 | Fereastra rolling pe care se evaluează contorul. |
Blocarea este aplicată de același mecanism folosit de Login Protection,
deci apare în tabul Access Rules → Blocked IPs cu motivul 404_flood.
Protecție REST API
WordPress expune din start un REST API mare, inclusiv endpoint-uri care sunt utile constructorilor de site-uri, dar adesea inutile pe un site de producție. Security Pilot poate bloca accesul neautentificat la grupuri întregi de endpoint-uri, lăsând restul API-ului intact.
Grupuri protejate:
/wp/v2/users— enumerare de useri prin endpoint-ul core de users.- WooCommerce — endpoint-urile de store, comenzi și clienți expuse de WooCommerce când e instalat.
- Jetpack — namespace-ul REST propriu Jetpack.
wp-site-health— endpoint-uri de health-check care pot scurge informații despre mediu.- Divi Builder — endpoint-urile REST Divi.
- Elementor — endpoint-urile REST Elementor.
Activează protecția doar pentru grupurile de care nu ai nevoie. De exemplu, un site care nu rulează WooCommerce poate închide în siguranță endpoint-urile WooCommerce. Plugin-ul verifică autentificarea pe fiecare request și returnează o eroare de autorizare pentru apelanții neautentificați care încearcă să acceseze un grup protejat.
Protecție formulare
Protejează formularele de contact / comentarii / login din site împotriva spam-ului, înscrierilor cu email disposable și a submisiilor de tip bot de mare viteză:
| Câmp | Default | Note |
|---|---|---|
| Max submisii per IP în fereastra de cooldown | 1 | Plafon dur per IP în fereastra de cooldown. |
| Fereastră de cooldown per IP (minute) | 30 | Cât timp rămâne închisă poarta de rate per IP după o submisie. |
| Max total mail-uri din formular pe oră (global) | 15 | Plafon la nivel de site pe submisiile prin email pe oră. |
| TLD-uri de email blocate | separate prin virgulă | Respinge submisiile al căror TLD de email se potrivește în listă (ex. mfa, xyz, top, click, link, surf, icu, gq, ml, cf, tk, ga). |
| Domenii de email blocate | separate prin virgulă | Respinge submisiile al căror domeniu de email se potrivește în listă — util pentru furnizorii de mail disposable. |
Capcanele honeypot (câmpuri ascunse completate doar de boți) și o verificare minimă a timpului de completare rulează alături de porțile de rate. Încercările blocate sunt logate în Attack Log.
Hardening WordPress
Modulul de hardening închide feature-uri WordPress care sunt frecvent abuzate sau care dezvăluie informații pe care atacatorii le pot folosi pentru a planifica un exploit. Fiecare opțiune este independentă.
- Dezactivează editorul de fișiere — închide editorul de fișiere
pentru teme și plugin-uri din dashboard (
DISALLOW_FILE_EDIT). Un atacator care reușește să obțină credențiale de admin nu mai poate modifica codul direct din UI-ul WordPress. - Dezactivează XML-RPC — blochează endpoint-ul
xmlrpc.php, care este o țintă uzuală pentru atacuri brute-force și amplification. Nu dezactiva XML-RPC decât dacă nicio integrare de pe site nu depinde de el. - Dezactivează pingback-urile și trackback-urile — închide un vector de amplification de mult timp folosit în campanii DDoS.
- Ascunde versiunea WordPress — elimină meta tag-ul
generatorși parametrii de query versiune de pe asset-urile encoded, ca versiunea WordPress instalată să nu fie anunțată în source-ul paginii. - Elimină linkul RSD — scoate linkul Really Simple Discovery folosit de clienții externi de publicare.
- Elimină manifestul WLW — elimină linkul de manifest Windows Live Writer, rareori util astăzi.
Pentru majoritatea site-urilor de producție, este sigur să activezi toate opțiunile de hardening. Dezactivarea editorului de fișiere și a XML-RPC, în special, este considerată o recomandare de bază de comunitatea de securitate WordPress.
Security Check
Pagina Security Check — Security Pilot → Security Check — rulează un audit dintr-un click și produce un grad cu literă, de la A („excelent, securitatea ta este puternică”) până la F, alături de contoare KPI pentru total passed, failed, warning și total checks.

Check-ul acoperă fiecare categorie pe care plugin-ul o poate verifica din interiorul WordPress, inclusiv (dar fără să se limiteze la):
- HTTPS configurat pe URL-ul site-ului.
- Editor de fișiere dezactivat (
DISALLOW_FILE_EDIT). - XML-RPC dezactivat.
- Debug logging și debug display oprite în producție.
- Acces la
wp-config.phpblocat la nivel de web server. - WordPress core, plugin-uri și teme la zi.
- Plugin-uri inactive încă instalate (suprafață de atac).
- Lipsa user-ului default
admin. - Protecție REST API activă.
- Headere HTTP de securitate, login protection și request firewall active.
- Prefix DB puternic, expunerea PHP, semnătura serverului.
Fiecare rând afișează un titlu scurt, o descriere de un rând și un
badge de status (PASS, WARNING, FAIL, INFO). Modulul
Settings → Security Check expune trei comutatoare opt-in care
adaugă verificări mai profunde (plugin-uri învechite, teme învechite,
lookup de vulnerabilități pentru plugin-uri într-un feed public) — astea
rulează când se cere raportul și îl încetinesc cu câteva secunde, deci
sunt dezactivate din start. Din raportul în sine, remedierile sunt de
obicei la un click distanță în adminul WordPress (update plugin,
ștergerea plugin-urilor inactive, schimbarea unui toggle de hardening).
Utilizare
O primă parcurgere practică a plugin-ului arată așa.
- Instalează și activează Security Pilot.
- Deschide Security Pilot → Settings.
- Activează Headerele HTTP de securitate cu default-urile recomandate. Vizitează câteva pagini ale site-ului și verifică consola browser-ului pentru încălcări neașteptate de Content-Security-Policy.
- Activează Login Protection. Lasă Max failed attempts la
5, alege o fereastră de încercări de 15 minute și un lockout de 60 de minute pentru un site tipic. Pornește alertele pe email, ca să afli când site-ul este atacat. - Activează Request Firewall-ul. Nu mai e necesară altă configurare.
- Activează Rate Limiter-ul pentru a prinde flood-urile de 404 (default: 25 hit-uri în 60 de secunde → IP adăugat în blocklist).
- Comută Protecția REST API pentru grupurile de endpoint-uri pe
care site-ul tău nu le folosește public. Grupul
/wp/v2/userseste aproape mereu sigur de închis. - Activează Form Protection pe site-urile cu formulare de contact / comentarii — alege un cooldown per IP rezonabil și o blocklist de TLD-uri.
- Activează opțiunile de Hardening WordPress. Cel puțin, dezactivează editorul de fișiere și XML-RPC pe site-urile de producție.
- Rulează un Security Check și acționează pe fiecare rând de
WARNINGșiFAIL(actualizează sau șterge plugin-urile și temele listate, schimbă toggle-urile de hardening semnalate).
După această primă parcurgere, întoarce-te periodic la Security Pilot → Security Check ca să ții gradul peste C și la Attack Log + Access Rules ca să revezi ce a fost prins.
Revizuirea regulilor de acces
Ecranul Access Rules (Security Pilot → Access Rules) este un panou de control centralizat cu trei taburi pentru blocklists și whitelists bazate pe IP și URL:
- Blocked IPs — fiecare adresă blocată momentan de Login Protection,
Rate Limiter sau firewall. Fiecare rând afișează IP-ul, motivul
blocării (ex.
firewall:path_traversal,404_flood,firewall:sqli), momentul adăugării și un buton Unblock. Un formular simplu sus îți permite să blochezi manual un IP arbitrar cu un motiv opțional, iar un câmp de căutare filtrează după IP sau motiv. - Whitelisted IPs — adrese exceptate de la toate verificările (birou, serviciu de monitoring, server de staging, IP-ul propriu de acasă).
- Whitelisted URLs — căi exceptate de la 404 Rate Limiter (util când un endpoint legitim returnează legitim 404 în rafale).

Folosește acest ecran pentru a:
- Debloca o adresă care a fost prinsă pentru că un user legitim a greșit la parolă.
- Pune în whitelist un IP cunoscut ca bun (biroul tău, un serviciu de monitoring, un server de staging), ca să nu fie blocat accidental.
- Pune în whitelist un URL care lovește by design rate limit-ul de 404 (de ex. o cale de probe consumată de monitoring extern).
Revizuirea log-ului de atacuri
Attack Log (Security Pilot → Attack Log) înregistrează fiecare
request blocat, inclusiv lockout-urile brute-force, hit-urile de
firewall, declanșările rate-limiter-ului, respingerile de form-spam
și refuzurile REST API. Fiecare rând conține timestamp-ul, IP-ul
sursă, Attack type
(ex. RESTRICTION, REQUEST_URI, PATH_TRAVERSAL,
COMMAND_INJECTION, POST_X), Rule listener-ul care a emis
blocul și Request URI-ul care l-a declanșat. O acțiune bulk
Clear Log șterge pagina, iar toolbar-ul expune o căutare în text
liber plus filtre per IP și per listener.

Log-ul este util atât pentru revizuire post-incident, cât și pentru tuning-ul firewall-ului: dacă un request legitim către site-ul tău apare în log, poți identifica regula responsabilă și decizi dacă să pui în whitelist request-ul, IP-ul sau să rafinezi regula.
Widget pe dashboard-ul WordPress
Security Pilot adaugă un widget pe ecranul Dashboard standard (pagina pe care WordPress o deschide la login), ca cifrele principale să fie vizibile din momentul în care te loghezi.

Widget-ul afișează:
- Cel mai recent grad Security Check (A–F) și scorul numeric
(ex.
A 95/100), randate ca un inel colorat. - Un contor live Blocked IPs preluat din tabelul Access Rules.
- Un contor curent Attacks preluat din Attack Log.
- Lista Recent Attacks — ultimele cinci rânduri din Attack Log, cu badge de tip, IP sursă și timestamp.
- Scurtături în footer către Attack Log și Full Security Report.
FAQ
Înlocuiește Security Pilot alte plugin-uri de securitate?
Pentru majoritatea site-urilor, da. Security Pilot acoperă headere HTTP, protecție login, filtrare de request-uri, restricții REST API, hardening și auditing. Este intenționat ușor, mai degrabă decât o suită „swiss-army”. Rularea lui alături de un alt firewall sau un alt plugin de login protection este tehnic posibilă, dar rareori utilă și poate cauza ca reguli care se suprapun să se declanșeze de două ori.
Vor strica headerele site-ul?
Valorile default sunt conservatoare. Cele două headere care cer cel mai des atenție sunt HSTS și Content-Security-Policy.
- Activează HSTS doar după ce site-ul este complet accesibil prin HTTPS, inclusiv pentru orice subdomeniu pe care vrei să-l acoperi. Header-ul este cache-uit de browsere și nu poate fi revocat ușor.
- Ajustează Content-Security-Policy după ce te uiți în consola browser-ului după resursele blocate pe paginile reale. Adesea trebuie să adaugi script-uri custom, font-uri și analytics în policy.
Va bloca firewall-ul de request-uri traficul legitim?
Pattern-urile de detecție țintesc semnături de atac cunoscute și tind să fie specifice. Dacă un request legitim este blocat, va apărea în log-ul de atacuri cu regula care a declanșat blocul. Poți apoi să deblochezi IP-ul și, dacă pattern-ul este cu adevărat inevitabil, să documentezi excepția pentru echipa ta.
Funcționează plugin-ul în spatele unui CDN sau a unui reverse proxy?
Da. Plugin-ul citește adresa IP originală din headerele standard de
request și poate identifica corect vizitatorii din spatele unui CDN,
cu condiția ca mediul tău de hosting să trimită mai departe header-ul
corect X-Forwarded-For sau echivalent. Asigură-te că orice strat de
edge din fața WordPress nu strip-uiește headerele de răspuns adăugate
de Security Pilot.
Pot exporta log-urile de atacuri sau listele de IP-uri blocate?
Log-ul de atacuri și tabelul de IP-uri blocate sunt stocate în baza ta de date WordPress și pot fi revizuite direct din interfața de admin. Pentru arhivare pe termen lung sau analiză off-site, fă un backup de bază de date așa cum faci pentru orice altă dată WordPress.
Dezactivarea XML-RPC strică ceva?
XML-RPC este folosit de clientul legacy Windows Live Writer, de aplicațiile mobile WordPress în anumite configurații și de un număr mic de integrări terțe. Dacă nu folosești nimic din astea, dezactivarea XML-RPC este unul dintre cei mai eficienți pași de hardening dintr-un singur click pe care îi poți face.
Se păstrează setările când plugin-ul este dezactivat?
Da. Dezactivarea Security Pilot păstrează configurarea, log-ul de atacuri și blocklist-ul în baza de date, astfel încât re-activarea plugin-ului restaurează starea anterioară.
Depanare
Un user legitim este blocat
Deschide Blocked IPs, găsește intrarea pentru adresa afectată și elimină blocul. Dacă același user este blocat în mod repetat, ia în considerare:
- Să mărești Max failed attempts pentru utilizatorii uitucii.
- Să adaugi IP-ul utilizatorului (sau IP-ul NAT al biroului) în allowlist.
- Să ceri utilizatorului să-și reseteze parola în loc să o ghicească.
Browser-ul blochează resurse după activarea CSP
Content-Security-Policy este intenționat strict din start. Deschide dev tools-urile browser-ului și uită-te în tabul Console — browser-ul va raporta fiecare resursă blocată alături de directiva care a respins-o. Ajustează CSP-ul pentru a include originile de încredere (CDN, furnizor de analytics, host de font-uri) pe care site-ul tău se bazează.
Paginile continuă să se încarce pe HTTP după activarea HSTS
HSTS este onorat doar după ce browser-ul a văzut header-ul cel puțin
o dată prin HTTPS. Vizitează site-ul direct prin https:// pentru a
primi cache-ul. Dacă site-ul nu este încă accesibil prin HTTPS pentru
fiecare URL pe care îl anunți, dezactivează HSTS până când migrația
este completă.
Integrările REST API încetează să funcționeze
Dacă o integrare care depinde de un grup de endpoint-uri protejat încetează să funcționeze, dezactivează temporar protecția pentru acel grup în REST API Protection și confirmă faptul că integrarea se autentifică corect. Multe integrări se așteaptă să fie apelate ca utilizator WordPress autentificat; request-urile autentificate nu sunt blocate de acest modul.
Headerele nu sunt prezente în răspuns
Unele host-uri sau reverse proxy-uri strip-uiesc sau suprascriu
headerele de răspuns adăugate de PHP. Verifică headerele cu o unealtă
precum curl -I https://example.com/ sau cu inspector-ul de rețea
al browser-ului. Dacă lipsește un header, verifică documentația
host-ului pentru cum să permiți trecerea de headere custom sau adaugă
header-ul la edge, dacă host-ul cere asta.
Alertele pe email nu sosesc
Alertele pe email folosesc funcția wp_mail() din WordPress. Dacă
nu sosește niciun email, problema ține aproape întotdeauna de
configurarea de mail a site-ului, nu de Security Pilot. Instalează
un plugin de mail tranzacțional (de exemplu, un plugin care rutează
mail-ul WordPress prin SMTP) și retestează declanșând un lockout
dintr-un browser de test.