Defaults.Exposed › Remedieri › Protecție clickjacking (X-Frame-Options)
Cum să remediezi Protecție clickjacking (X-Frame-Options)
O instrucțiune pe o linie care spune browserelor să nu permită altor site-uri să încarce în secret site-ul tău în interiorul propriilor lor pagini. Fără ea, un escroc poate ascunde paginile tale reale autentificate în spatele unei pagini false și îți poate păcăli clienții să facă clic pe lucruri pe care nu le-au intenționat vreodată — aprobând o plată, schimbând o parolă, acordând acces.
Concluzia pentru afacerea ta: Un fraudator poate înfășura invizibil site-ul tău live în interiorul unui fals și fura bani sau acces la cont de la clienții tăi autentificați — și pentru client arată ca și cum site-ul tău a făcut-o. Remedierea este gratuită și durează un dezvoltator aproximativ 15 minute; lăsând-o dezactivată este un decalaj cunoscut pe care atât criminalii cât și cumpărătorii precauți îl pot depista în secunde.
Ce te poate costa
- Un escroc ascunde ecranul tău real de autentificare sau plată în spatele unei pagini cu aspect inofensiv și păcălește un client să 'confirme' un transfer sau o schimbare de setare fără să își dea seama — clientul te învinuiește pe tine, nu pe atacator.
- Zona ta de cont autentificată este încărcată invizibil pe deasupra unei pagini 'Ai câștigat — fă clic pentru a revendica'; clicul aprobă de fapt o schimbare reală pe contul clientului, iar tu răspunzi la apelul de suport furios.
- Echipa IT a unui prospect rulează o scanare rapidă de securitate înainte de semnare, vede că site-ul tău poate fi încorporat de oricine și îl semnalează ca risc care blochează sau ucide tranzacția.
- Marca ta devine momeala într-o campanie de fraudă; clienții care sunt prinși o țin minte ca 'compania al cărei site a permis să se întâmple asta'.
- Scanarea unui auditor sau de asigurare cibernetică listează protecția clickjacking lipsă ca un eșec de igienă de bază — ieftin de remediat, jenant de semnalat.
De ce contează. Aceasta este o setare gratuită pe o linie care durează minute să adaugi și închide o clasă întreagă de înșelătorie îndreptată spre clienții tăi autentificați. Pe notarea noastră este o verificare de securitate web valorând puncte reale cotată cu severitate ridicată, deoarece un antet lipsă lasă o gaură cunoscut ușor-de-verificat pe care criminalii o automatizează și cumpărătorii o caută.
Ce este, în cuvinte simple
Când cineva vizitează site-ul tău, browserul lor poate fi de asemenea instruit să încarce site-ul tău în interiorul unui alt site web — ca o fereastră mică încorporată în interiorul unei pagini mai mari. Aceasta sună inofensivă și uneori este. Dar este mecanismul din spatele unui atac numit clickjacking.
Iată trucul. Un escroc construiește propria lor pagină și încarcă în tăcere site-ul tău real în interiorul ei — invizibil, făcut complet transparent. Apoi plasează propriul conținut deasupra: un buton strălucitor, un “Redă video,” un “Revendică premiul tău.” Clientul tău vede pagina atacatorului și dă clic pe ceea ce pare a fi un buton inofensiv. Dar deoarece site-ul tău real se află în mod invizibil sub cursorul lor, clicul aterizează de fapt pe pagina ta — confirmând o plată, schimbând o parolă, aprobând accesul, acceptând o permisiune. Clientul crede că a dat clic pe un lucru; de fapt a dat clic pe altul, pe un site în care are încredere.
Protecția clickjacking este o instrucțiune scurtă și invizibilă pe care site-ul tău o trimite browserului fiecărui vizitator care spune, în esență:
“Nu permite altor site-uri să mă încarce în interiorul lor. Dacă cineva încearcă, refuză.”
Browserele moderne respectă aceasta automat. Cu ea activată, trucul pur și simplu nu funcționează — copia încorporată a site-ului tău refuză să se încarce. Fără ea, site-ul tău este fair game pentru a fi folosit ca strat ascuns într-o înșelătorie, iar clientul care este prins va asocia totul cu marca ta, nu a atacatorului.
Ce te poate costa
Acestea sunt scenarii realiste de zi cu zi. Nu numim niciodată o afacere reală; acestea sunt ilustrații ale modului în care decalajul este folosit.
-
“Confirmarea” invizibilă. Un client este autentificat în portalul tău de cont într-un tab. Ajunge pe o pagină (dintr-un anunț, un email, un rezultat de căutare) care promite ceva tentant și arată un mare buton “Continuă”. Ascuns sub acel buton se află controlul tău real “Confirmare transfer” sau “Schimbă email”, încărcat din propria lor sesiune autentificată. Fac clic pe “Continuă” — și autorizează fără să vrea o schimbare pe contul lor real la tine.
-
Piratarea setărilor. Un atacator include pagina de setări a contului tău și suprapune un joc sau un sondaj inofensiv. Câteva clicuri în locurile potrivite schimbă în tăcere o setare — adăugând email-ul atacatorului ca adresă de recuperare, acordând permisiunea unei aplicații sau dezactivând o alertă de securitate. Contul este acum compromis în tăcere.
-
Tranzacția care se blochează. Un client mai mare trimite chestionarul standard de securitate înainte de semnare. O linie întreabă dacă site-ul tău setează protecție anti-cadru (X-Frame-Options / CSP frame-ancestors). Contactul IT trebuie să răspundă “nu,” iar achizițiile se pauzeay în timp ce remediezi o setare gratuită de 15 minute care acum apare ca un semnal de alarmă.
-
Campania de falsificare a mărcii. Deoarece paginile tale reale de încredere pot fi încorporate, un atacator folosește autentificarea sau plata ta ca strat convingător într-o campanie de phishing mai largă. Clienții care sunt prinși nu învinuiesc atacatorul umbros — își amintesc că a fost data când “site-ul tău” le-a permis să fie înșelați.
-
Semnalul de audit. Scanarea unui asigurător sau un auditor care revizuiește postura ta de securitate listează protecția clickjacking lipsă printre constatări. Este un element de igienă de bază din manual; a-l semnalat semnalează că protecțiile ușoare și gratuite nu erau la locul lor.
Daunele cad pe un client real, autentificat care face ceva ce nu a intenționat — și poartă numele tău, nu al atacatorului.
Ce este de fapt
Când un browser îți solicită site-ului o pagină, serverul tău trimite înapoi pagina plus câteva “antete” invizibile. Protecția clickjacking este livrată prin aceste antete. Există două, iar verificarea noastră trece dacă oricare este prezent:
1. Antetul mai vechi — X-Frame-Options:
X-Frame-Options: SAMEORIGIN
Acesta ia una din două valori practice:
SAMEORIGIN— propriul tău site poate încorpora propriile pagini, dar niciun site extern nu poate. Implicit sigur pentru aproape toată lumea.DENY— nimeni nu poate încorpora paginile tale, inclusiv tu. Folosește aceasta numai dacă site-ul tău nu-și încadrează niciodată propriul conținut.
2. Antetul modern — Content-Security-Policy frame-ancestors:
Content-Security-Policy: frame-ancestors 'self';
Acesta este controlul mai nou, mai flexibil:
frame-ancestors 'self'— echivalent cuSAMEORIGIN.frame-ancestors 'none'— echivalent cuDENY.frame-ancestors 'self' https://partener.example.com— propriul tău site plus un partener de încredere denumit și nimeni altcineva.
Cum arată “bine”
Configurarea cea mai puternică folosește ambele: frame-ancestors pentru browsere moderne și X-Frame-Options: SAMEORIGIN ca rezervă pentru clienți mai vechi. Verificarea noastră este satisfăcută de oricare de unul singur — dar deoarece ambele sunt gratuite și durează aceleași câteva minute, nu există niciun motiv să nu le setezi pe ambele.
Un detaliu important pe care dezvoltatorul tău ar trebui să îl știe: un antet Content-Security-Policy-Report-Only nu aplică nimic — numai raportează. Dacă vrei că protecția clickjacking să intre efectiv în vigoare, trebuie să vină dintr-un antet de aplicare.
Cum se remediază (gratuit, ~15 minute)
Predă această secțiune celui care rulează site-ul tău — persoana IT, dezvoltatorul web sau suportul de găzduire. Remedierea este gratuită. Sunt unul sau două antete de răspuns sau o regulă în CDN-ul tău. Nu există nimic de cumpărat.
Pasul 1 — Decide cât de strict să fii
- Cele mai multe afaceri:
SAMEORIGIN/frame-ancestors 'self'. Propriul tău site continuă să funcționeze; persoanele din exterior sunt blocate. - Dacă site-ul tău nu-și încadrează niciodată propriile pagini:
DENY/frame-ancestors 'none'pentru blocare maximă. - Dacă un partener autentic trebuie să încorporeze o pagină specifică: numește-i explicit cu
frame-ancestors 'self' https://partener.example.com;.
Pasul 2 — Adaugă antetele (alege platforma)
Nginx — în interiorul blocului server:
add_header X-Frame-Options "SAMEORIGIN" always;
add_header Content-Security-Policy "frame-ancestors 'self';" always;
Apache — asigură-te că mod_headers este activat, apoi în gazda virtuală:
Header always set X-Frame-Options "SAMEORIGIN"
Header always set Content-Security-Policy "frame-ancestors 'self';"
Microsoft IIS — în web.config în interiorul <customHeaders>:
<add name="X-Frame-Options" value="SAMEORIGIN" />
<add name="Content-Security-Policy" value="frame-ancestors 'self';" />
Cloudflare (sau un CDN similar): mergi la Reguli → Reguli de transformare → Modifică antetul de răspuns și adaugă două reguli care setează X-Frame-Options la SAMEORIGIN și Content-Security-Policy la frame-ancestors 'self'; pe toate răspunsurile.
Trimiți deja o Content-Security-Policy din alte motive? Nu crea un al doilea antet CSP — adaugă frame-ancestors în politica ta existentă. Două antete CSP pot intra în conflict.
Constructori de site-uri (Squarespace, Wix, Shopify și similar): aceste platforme adesea setează protecția anti-cadru pentru tine, deci poate deja treci fără să faci nimic. Dacă verificarea noastră o semnalează, controlul este de obicei în setările de securitate ale platformei, sau îl adaugi la CDN-ul din fața site-ului.
Pasul 3 — Reîncarcă și verifică
Reîncarcă serverul web sau deployează regula CDN, apoi încarcă site-ul tău live și verifică antetele de răspuns — instrumente dev browser → tab Rețea → dă clic pe cererea paginii → Antete de răspuns, sau orice instrument gratuit de verificare a antetelor. Confirmă că antetele apar pe răspunsurile la pagini reale, nu numai pe homepage. Apoi rulează din nou verificarea.
Greșeli comune
- Folosind un CSP numai-raport și presupunând că te protejează.
Content-Security-Policy-Report-Onlynumai raportează violările — nu aplică nimic. Ai nevoie de un antet de aplicare pentru că protecția să intre în vigoare. - Setând două antete
Content-Security-Policyseparate. Dacă ai deja un CSP, adaugăframe-ancestorsla el în loc să emiti o a doua politică; antetele CSP conflictuale pot produce comportament neașteptat. - Setând
DENYcând propriul tău site încorporează propriile pagini.DENYblochează toate cadrele, inclusiv ale tale. Dacă oricare parte a site-ului tău folosește iframe-uri proprii, foloseșteSAMEORIGIN/frame-ancestors 'self'. - Protejând numai homepage-ul. Paginile care contează cel mai mult pentru clickjacking sunt cele autentificate — setări de cont, confirmare de plată, admin. Asigură-te că antetele sunt aplicate la nivelul întregului site.
- Presupunând că HTTPS sau lacătul acoperă deja aceasta. Criptarea și anti-cadrarea sunt fără legătură. Un certificat perfect nu face nimic pentru a opri paginile tale să fie încorporate.
- Bazându-te pe soluții de alternativă vechi. JavaScript “frame-busting” (scripturi care încearcă să evadeze din cadre) este nesigur și poate fi ocolit. Antetele sunt remedierea corectă aplicată de browser.
Întrebări frecvente
Nu sunt tehnic — pot rezolva asta singur?
Nu trebuie să faci componenta tehnică. Este o singură setare adăugată la serverul sau CDN-ul site-ului tău, iar orice dezvoltator web sau furnizor IT o poate adăuga în câteva minute. Predă-le secțiunea 'Cum se remediază' de mai jos — le spune exact ce să adauge. Remedierea este gratuită; percepem taxe numai dacă ai dori să te monitorizăm că rămâne la locul ei.
Va opri asta propriul meu site sau partenerii legitimi să afișeze paginile mele?
Numai dacă este setat prea strict. Setarea comună ('SAMEORIGIN' sau 'frame-ancestors self') lasă totuși propriul tău site web să îi încorporeze propriile pagini normal — blochează numai site-urile externe. Dacă un partener autentic trebuie să încorporeze o singură pagină specifică a ta, dezvoltatorul tău poate permite acea singură sursă blocând în continuare pe toți ceilalți.
Suntem o afacere mică — chiar ar viza cineva site-ul nostru?
Aceste atacuri sunt rulate în vrac de instrumente automate, nu selectate manual. Site-urile mai mici sunt adesea vizate tocmai deoarece le lipsesc protecțiile de bază de acest tip. Atacatorul nu are nevoie să știe cine ești — trebuie numai ca site-ul tău să fie încorporabil. Închiderea decalajului nu te costă nimic.
Cum arată de fapt 'bine'?
Fie un antet X-Frame-Options setat la SAMEORIGIN (sau DENY), fie o Politică de Securitate a Conținutului cu o directivă frame-ancestors — ideal ambele. Verificarea noastră trece dacă oricare este prezent. Controlul modern, mai flexibil este frame-ancestors; X-Frame-Options este antetul mai vechi care acoperă în continuare unele browsere moștenite, deci configurarea centură-și-bretele folosește ambele.
Nu este asta același lucru cu lacătul SSL sau HTTPS?
Nu — protejează împotriva unor lucruri complet diferite. HTTPS criptează conexiunea astfel că nimeni nu o poate citi în tranzit. Protecția clickjacking oprește paginile tale să fie încărcate în interiorul site-ului altcuiva. Poți avea un lacăt perfect și să fii totuși complet expus la clickjacking. Sunt verificări separate și vrei ambele.
Dacă nu remediem, scade nota noastră?
Da. Aceasta este o verificare de securitate web notată, nu informațională — un antet lipsă costă puncte și este cotat cu severitate ridicată, deoarece expune direct clienții tăi autentificați la fraudă. Este de asemenea unul din cele mai ieftine puncte de recuperat: un singur antet gratuit, aproximativ 15 minute din timpul unui dezvoltator.