HTTP Security Headers — Ce Sunt și De Ce Le Ai Nevoie
Imaginează-ți că trimiți un colet prin curier. Pe colet poți lipi etichete: „Fragil", „Nu deschide în ploaie", „Livrare doar destinatarului". Aceste etichete nu schimbă conținutul coletului, dar îi spun curierului cum să-l trateze.
Exact așa funcționează HTTP Security Headers — sunt „etichete" invizibile pe care serverul tău le atașează fiecărei pagini web trimise către browser. Ele nu schimbă conținutul site-ului, dar îi spun browserului ce are voie și ce nu are voie să facă.
Și totuși, conform statisticilor din 2026, peste 60% din site-urile web nu au configurat corect aceste headere. Rezultatul? Site-uri vulnerabile la atacuri care ar fi putut fi prevenite cu câteva linii de configurare.
De Ce Ar Trebui Să Te Intereseze?
Gândește-te la site-ul tău ca la o casă. Ai ușă, ai geamuri, poate ai și alarmă. Dar dacă ai lăsa o notă pe ușă care spune „Ușa din spate e deschisă, intrați liber"? Cam asta face un site fără security headers — lasă browserul să ia decizii pe cont propriu, fără instrucțiuni de securitate.
Concret, fără security headers adecvate:
- Atacatorii pot injecta scripturi malițioase în paginile tale (XSS)
- Site-ul tău poate fi încadrat într-un iframe pe un site fals (Clickjacking)
- Datele utilizatorilor pot fi interceptate pe conexiuni nesecurizate
- Browserul poate interpreta greșit fișierele, executând cod malițios
Vestea bună? Configurarea lor durează 15-30 de minute și nu necesită cunoștințe avansate de programare.
Cele 4 Tipuri de Atacuri Pe Care Le Previn
Înainte să vorbim despre headere, hai să înțelegem ce atacuri previn. Le explic simplu, fără jargon:
1. Cross-Site Scripting (XSS) — „Cuvinte Puse în Gura Ta"
Imaginează-ți că ai un magazin și un client scrie pe perete, în zona de recenzii: „Acest magazin are o promoție — dă-mi datele cardului". Alți clienți citesc mesajul și cred că vine de la tine.
XSS funcționează la fel: atacatorul injectează cod JavaScript în site-ul tău. Când alți vizitatori accesează pagina, codul rulează ca și cum ar fi al tău — poate fura cookie-uri, parole sau date personale.
Cât de frecvent este? XSS rămâne în OWASP Top 10 de peste 15 ani și reprezintă circa 30% din toate vulnerabilitățile web raportate.
2. Clickjacking — „Butonul Invizibil"
Cineva pune un sticler transparent peste butonul de lift. Tu crezi că apeși pe „Parter", dar de fapt apeși pe altceva. Pe web, atacatorul pune site-ul tău într-un iframe invizibil deasupra unui alt site. Utilizatorul crede că dă click pe ceva inofensiv, dar de fapt interacționează cu site-ul tău — poate aprobă o tranzacție, schimbă o parolă sau acordă permisiuni.
3. MIME Sniffing — „Deschide Pachetul Greșit"
Trimiți un colet etichetat „Cărți" dar înăuntru e altceva. Curierul zice: „Hmm, nu pare a fi cărți, hai să verific eu ce e". Pe web, un browser poate „mirosi" (sniff) conținutul unui fișier și decide singur ce tip de fișier este, ignorând ce spune serverul. Un fișier care pare o imagine poate fi de fapt un script malițios.
4. Downgrade Attack — „Forțează Ușa Veche"
Casa ta are două uși: una blindată (HTTPS) și una veche de lemn (HTTP). Atacatorul te redirecționează spre ușa de lemn, unde poate intercepta tot ce transmiți. Fără protecție, browserul acceptă conexiunea nesecurizată fără să clipească.
Cele 6 Security Headers Esențiale
Acum că știm ce atacuri prevenim, hai să vedem fiecare header și ce face. Am inclus o analogie pentru fiecare, plus configurarea exactă.
1. Content-Security-Policy (CSP) — „Lista de Invitați"
Analogia: Organizezi o petrecere și dai portarului o listă: „Doar acești oameni au voie înăuntru". Oricine altcineva, afară. CSP spune browserului exact de unde are voie să încarce resurse (scripturi, stiluri, imagini, fonturi).
Ce previne: XSS și injecția de date.
Exemplu de configurare:
Content-Security-Policy: default-src 'self'; script-src 'self' https://www.google-analytics.com; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self' https://fonts.gstatic.com; frame-ancestors 'none';
Ce înseamnă pe românește:
default-src 'self'— implicit, încarcă resurse doar de pe propriul domeniuscript-src 'self' https://www.google-analytics.com— scripturi doar de la noi și Google Analyticsstyle-src 'self' 'unsafe-inline'— stiluri de la noi + stiluri inline (necesare pentru multe framework-uri)img-src 'self' data: https:— imagini de la noi, data URIs și orice sursă HTTPSframe-ancestors 'none'— nimeni nu poate pune site-ul într-un iframe
Content-Security-Policy-Report-Only pentru a testa fără să blochezi nimic, apoi treci la versiunea activă.
2. Strict-Transport-Security (HSTS) — „Încuietoarea Automată"
Analogia: Îi spui ușii tale să se încuie automat de fiecare dată. Chiar dacă cineva încearcă să o deschidă manual, rămâne încuiată. HSTS spune browserului: „De acum înainte, conectează-te la mine DOAR prin HTTPS. Chiar dacă cineva tastează HTTP, tu convertește automat".
Ce previne: Atacuri de downgrade și interceptare de trafic (man-in-the-middle).
Configurare:
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Ce înseamnă:
max-age=31536000— ține minte această regulă timp de 1 an (în secunde)includeSubDomains— aplică și pentru subdomeniile talepreload— cere includerea în lista de preload HSTS din browsere
Important: Asigură-te că ai certificat SSL valid pe toate subdomeniile înainte de a activa includeSubDomains.
3. X-Frame-Options — „Regula Anti-Încadrare"
Analogia: Pui o regulă pe tabloul din magazin: „Fotografiile din acest magazin NU pot fi folosite de alți comercianți în vitrinele lor". X-Frame-Options spune browserului dacă pagina ta poate fi pusă într-un iframe pe alt site.
Ce previne: Clickjacking.
Configurare:
X-Frame-Options: DENY
Opțiuni:
DENY— nimeni nu poate încadra site-ul (cea mai sigură opțiune)SAMEORIGIN— doar propriul domeniu poate încadra paginile
Notă: Acest header este treptat înlocuit de directiva frame-ancestors din CSP, dar e bine să le ai pe ambele pentru compatibilitate.
4. X-Content-Type-Options — „Respectă Eticheta"
Analogia: Spui curierului: „Dacă pe colet scrie 'Cărți', tratează-l ca pe cărți. Nu deschide să verifici, nu ghici ce e înăuntru". Acest header oprește browserul din a „mirosi" tipul fișierelor.
Ce previne: MIME sniffing — executarea de cod malițios deghizat în alt tip de fișier.
Configurare:
X-Content-Type-Options: nosniff
Este cel mai simplu header — o singură valoare, fără opțiuni. Nu ai niciun motiv să nu-l activezi.
5. Referrer-Policy — „Ce Spui Următorului Magazin"
Analogia: Când pleci dintr-un magazin și intri în altul, vânzătorul te întreabă: „De unde vii?". Referrer-Policy controlează cât de multe informații spui: adresa completă, doar numele străzii sau „nu-ți spun".
Ce previne: Scurgerea de informații sensibile prin URL-uri (token-uri, ID-uri de sesiune).
Configurare recomandată:
Referrer-Policy: strict-origin-when-cross-origin
Ce face:
- Către propriul site → trimite URL-ul complet
- Către alte site-uri (HTTPS → HTTPS) → trimite doar domeniul (ex:
https://site-ul-tau.ro) - De la HTTPS la HTTP → nu trimite nimic
6. Permissions-Policy — „Regulamentul Clădirii"
Analogia: La intrarea în clădire e un panou: „Nu se permite: filmarea, accesul cu animale, muzica tare". Permissions-Policy (fost Feature-Policy) spune browserului ce funcții hardware are voie să folosească site-ul: cameră, microfon, geolocalizare, etc.
Ce previne: Accesul neautorizat la resurse hardware ale utilizatorului.
Configurare recomandată:
Permissions-Policy: camera=(), microphone=(), geolocation=(), payment=(self)
Ce înseamnă:
camera=()— nimeni nu poate accesa camera (nici site-ul, nici iframe-urile)microphone=()— nimeni nu poate accesa microfonulgeolocation=()— nimeni nu poate accesa locațiapayment=(self)— doar site-ul tău poate folosi Payment API
Cum Verifici Ce Headere Ai Acum?
Există trei metode simple:
Metoda 1: SoftAudit.ro (Cea Mai Rapidă)
Accesează SoftAudit.ro/verificare-securitate, introdu URL-ul site-ului tău și primești un raport complet cu:
- Ce headere ai configurate
- Ce headere lipsesc
- Scor de securitate
- Recomandări specifice pentru site-ul tău
Metoda 2: SecurityHeaders.com
Instrumentul lui Scott Helme — securityheaders.com — oferă un scor de la A+ la F și detalii despre fiecare header.
Metoda 3: Chrome DevTools
- Deschide site-ul în Chrome
- Apasă F12 (sau Click dreapta → Inspect)
- Tab-ul Network
- Reîncarcă pagina (F5)
- Click pe prima cerere (numele domeniului)
- Secțiunea Response Headers — aici vezi toate headerele
Cum Le Configurezi — Ghid Pas cu Pas
Pentru Apache (.htaccess)
Adaugă în fișierul .htaccess din rădăcina site-ului:
# Security Headers
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "DENY"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
Header always set Permissions-Policy "camera=(), microphone=(), geolocation=()"
Header always set Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self'; frame-ancestors 'none';"
Pentru Nginx
Adaugă în blocul server din configurarea Nginx:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "DENY" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
add_header Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self'; frame-ancestors 'none';" always;
Pentru WordPress (Plugin)
Dacă nu ai acces la fișierele serverului:
- Instalează pluginul HTTP Headers sau Really Simple SSL (versiunea Pro)
- Accesează Settings → HTTP Headers
- Activează fiecare header din interfața grafică
- Salvează și verifică cu SoftAudit.ro
Pentru Cloudflare
Dacă folosești Cloudflare:
- Accesează Rules → Transform Rules → Modify Response Header
- Crează o regulă nouă pentru fiecare header
- Setează acțiunea pe „Set static" și completează valoarea
Notă: HSTS poate fi activat direct din Cloudflare: SSL/TLS → Edge Certificates → HSTS.
Greșeli Frecvente de Evitat
1. CSP Prea Restrictiv
Dacă activezi script-src 'self' dar folosești Google Analytics, Tag Manager sau alte scripturi externe, site-ul se va strica. Adaugă fiecare sursă externă în lista CSP.
2. HSTS Fără SSL Valid
Dacă activezi HSTS dar certificatul SSL expiră, utilizatorii nu vor putea accesa site-ul deloc — browserul refuză conexiunea HTTP și HTTPS-ul nu funcționează.
3. Uitarea Subdomeniilor
Ai configurat totul pe www.site.ro dar api.site.ro sau cdn.site.ro rămân neprotejate.
4. Testare Insuficientă
Activezi CSP fără să testezi — formulare care nu mai funcționează, imagini care nu se încarcă, fonturi care dispar.
Cât Durează Implementarea?
| Header | Timp Estimat | Dificultate |
|---|---|---|
| X-Content-Type-Options | 1 minut | Foarte ușor |
| X-Frame-Options | 1 minut | Foarte ușor |
| Referrer-Policy | 2 minute | Ușor |
| Permissions-Policy | 5 minute | Ușor |
| HSTS | 5 minute | Mediu (necesită SSL) |
| CSP | 15-60 minute | Mediu-Avansat |
Total: Poți securiza un site simplu în sub 30 de minute. Un site complex (cu multe surse externe) poate necesita câteva ore pentru testarea CSP.
Verifică-ți Site-ul Gratuit
Nu trebuie să ne crezi pe cuvânt. Testează acum și vezi exact ce headere ai și ce îți lipsește:
Verifică Security Headers Gratuit
Raportul SoftAudit îți arată exact ce trebuie să adaugi, cu instrucțiuni specifice pentru configurația ta. Este gratuit, fără cont și durează sub 30 de secunde.
Concluzie
HTTP Security Headers sunt una dintre cele mai simple și eficiente măsuri de securitate pe care le poți implementa. Nu costă nimic, nu încetinesc site-ul și protejează împotriva unor atacuri foarte reale.
Gândește-te la ele ca la centura de siguranță — nu o porți pentru că te aștepți la un accident, ci pentru că e simplu de făcut și te protejează când ai mai mare nevoie.
Pașii următori:
- Verifică ce headere ai acum
- Adaugă headerele lipsă (începe cu cele simple: X-Content-Type-Options, X-Frame-Options)
- Testează CSP în modul Report-Only
- Reverifică scorul după implementare
Site-ul tău merită aceeași protecție pe care o dai casei tale. Iar headerele de securitate sunt încuietorile pe care nu le-ai pus încă.
Articole recomandate
Cum Să Îmbunătățești Viteza Site-ului — 20 de Metode Testate (2026)
20 de metode testate și ordonate după impact real pentru a accelera site-ul tău. De la optimizări simple fără cod până la tehnici avansate — cu statistici, exemple și checklist practic.
CiteșteCe Este Certificatul SSL și Cum Îl Verifici Corect
Află ce este un certificat SSL, cum funcționează, de ce e obligatoriu în 2026 și cum verifici dacă site-ul tău îl are configurat corect. Ghid complet, fără jargon.
CiteșteCum Să Alegi Hosting-ul Potrivit pentru Viteza și Securitatea Site-ului
Ghid complet pentru alegerea hosting-ului potrivit: ce tipuri există, ce contează pentru viteză și securitate, la ce să te uiți și ce să eviți. Explicat simplu.
CiteșteVerifică-ți website-ul gratuit
Rulează un audit complet — securitate, SEO, performanță, GDPR și accesibilitate — într-un singur click.
Auditează acum