X-Frame-Options + CSP frame-ancestors: protecție anti-clickjacking în 2026
Clickjacking permite atacatorului să transforme click-urile utilizatorilor voștri în acțiuni neautorizate. Două linii de header DNS și protejați aplicația.
Pe scurt
Clickjacking (UI redress attack) este atacul prin care un site malicios încarcă site-ul vostru într-un iframe transparent peste propriul conținut. Utilizatorul crede că dă click pe site-ul atacatorului, dar de fapt dă click în iframe-ul vostru — logout, transfer bani, share post, like, change settings — cu sesiunea sa autentificată.
Două headere blochează atacul:
- X-Frame-Options (RFC 7034) — legacy, dar suportat de browsere vechi
- CSP
frame-ancestors— modern, are prioritate în 2026
Best practice: ambele setate, pentru maximum compat.
Atacuri concrete
Cazul “Win iPhone”
Atacatorul construiește un site fake cu un buton “Win iPhone — click here”. Peste buton, iframe transparent cu https://internetbanking.firma.ro/transfer (deschis dacă utilizatorul e autentificat la banking app în alt tab). Click → execută acțiune transfer cu sesiunea legitimă.
Like-jacking (social media)
Site-ul atacatorului are un buton “Play video”. Peste buton, iframe transparent cu butonul “Like” al unei pagini Facebook. Utilizatorul gândește că dă play, de fapt face like. Boost artificial, abuz brand.
Account takeover prin reset password
Atacator iframe-ează firma.ro/account/security cu butonul “Adaugă email recuperare”. Utilizatorul cu sesiune activă, fără să știe, adaugă email-ul atacatorului → reset password ulterior trimite la atacator.
Protecția modernă: CSP frame-ancestors
Content-Security-Policy: frame-ancestors 'none';
Niciun site nu vă poate încărca în iframe. Recomandare default pentru aplicații sensibile (banking, admin panels).
Pentru aplicații care permit iframe pe propriul site:
Content-Security-Policy: frame-ancestors 'self';
Sau pentru parteneri specifici (ex: o platformă embed):
Content-Security-Policy: frame-ancestors 'self' https://partner.com;
Protecția legacy: X-Frame-Options
Pentru browser-e vechi care nu suportă CSP frame-ancestors (foarte rare în 2026):
X-Frame-Options: DENY
Sau:
X-Frame-Options: SAMEORIGIN
X-Frame-Options are 2 limitări față de CSP:
- Nu acceptă liste multiple de origini (doar
DENYsauSAMEORIGINsauALLOW-FROM <single>) ALLOW-FROMnu e suportat de Chrome / Safari
→ Folosiți CSP frame-ancestors ca primary, X-Frame-Options ca fallback.
Implementare pas-cu-pas
Pas 1 — Identificați aplicații care nu trebuie iframe-uite
Banking apps, admin panels, dashboards utilizator, formulare de plată, OAuth flows — toate trebuie frame-ancestors 'none'.
Pas 2 — Setați header-ul global pe răspunsurile HTML
nginx:
add_header Content-Security-Policy "frame-ancestors 'none'" always;
add_header X-Frame-Options "DENY" always;
Apache:
Header always set Content-Security-Policy "frame-ancestors 'none'"
Header always set X-Frame-Options "DENY"
Caddy:
header Content-Security-Policy "frame-ancestors 'none'"
header X-Frame-Options "DENY"
Express (Node.js):
app.use(helmet.frameguard({ action: 'deny' }));
app.use(helmet.contentSecurityPolicy({ directives: { 'frame-ancestors': ["'none'"] } }));
Pas 3 — Verificare
curl -I https://firma.ro | grep -i "x-frame\|frame-ancestors"
Test online: https://csp-evaluator.withgoogle.com/
Pas 4 — Pagini care permit iframe (excepții)
Dacă aveți pagini intentionate pentru iframe (widget-uri, embed-uri), pe acele pagini specifice setați:
Content-Security-Policy: frame-ancestors 'self' https://partner.com
În loc de 'none'. Granular per-route.
Confuzii frecvente
“X-Frame-Options e suficient — nu mai am nevoie de CSP.” — În 2026, browserele moderne (Chrome 90+, Firefox 90+) prioritează CSP frame-ancestors. X-Frame-Options rămâne backup.
“frame-ancestors 'none' îmi rupe Stripe checkout.” — Nu. Stripe Checkout își încarcă propriile iframe-uri în pagina voastră — asta e protejat de frame-src, nu frame-ancestors. Diferență fundamentală.
“Clickjacking e o problemă veche, nu se mai practică.” — Greșit. În 2024-2025 au fost atacuri active de clickjacking pe wallet-uri crypto (MyEtherWallet 2024, MetaMask phishing). Vector activ.
Verificați acum
ARTEMIS detectează absența X-Frame-Options + CSP frame-ancestors în orice scanare Site la 2 EUR. Plus 36 alte verificări tehnice.
🔗 Soluții complementare CAI Technology
- ARTEMIS — Verificare X-Frame-Options + CSP + 36 alte teste.
- Auditope — Audit holistic web (SEO + AI search + Performance + GDPR + WCAG).
- Lexnomia — Evaluare conformitate UE (NIS2 / GDPR / PCI-DSS).
- BeLegal — Verificare gratuită 5 minute compliance UE.
- AriaUnited — Consultanță fonduri europene pentru investiții cybersecurity.