Sicurezza degli iframe: clickjacking e X-Frame-Options
Prevenire gli attacchi di clickjacking con X-Frame-Options e CSP
Sicurezza degli iframe: clickjacking e X-Frame-Options è una lezione HTML Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento HTML Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso HTML Academy include 4 lezioni in totale.
Che cos'è il clickjacking
Il clickjacking (UI redressing) incorpora un sito bersaglio in un iframe trasparente sovrapposto a una pagina esca. L'utente crede di fare clic sull'esca, ma in realtà fa clic sulla pagina autenticata nascosta sottostante, eseguendo azioni sul sito bersaglio senza saperlo.
Meccanismo di un attacco di clickjacking
L'aggressore carica victim.com in un iframe trasparente posizionato sopra un pulsante "Fai clic per vincere!". Quando l'utente fa clic, in realtà fa clic sul pulsante "Elimina account" di victim.com, autenticato come sé stesso tramite il cookie di sessione di victim.com. Non è necessario alcun phishing.
Header X-Frame-Options
X-Frame-Options: DENY impedisce il caricamento della pagina in qualsiasi iframe. X-Frame-Options: SAMEORIGIN consente l'incorporamento solo da parte di pagine della stessa origine. Imposti questo header lato server su tutte le pagine autenticate per prevenire il clickjacking.
Content-Security-Policy frame-ancestors
Content-Security-Policy: frame-ancestors 'none' è la sostituzione moderna e più flessibile di X-Frame-Options: DENY. frame-ancestors 'self' sostituisce SAMEORIGIN. frame-ancestors può anche consentire origini attendibili specifiche: frame-ancestors https://trusted.example.com.
Frame busting con JavaScript
Le tecniche legacy di frame busting utilizzavano JavaScript per uscire dai frame. Sono facilmente neutralizzate dall'attributo sandbox, che blocca lo script di frame busting. Utilizzi sempre header lato server (X-Frame-Options o CSP frame-ancestors): il frame busting con JavaScript non è affidabile.
Quando consentire l'incorporamento
Casi d'uso legittimi per l'incorporamento: incorporare i propri contenuti nella propria origine (SAMEORIGIN) o consentire a un partner specifico di incorporare il proprio widget (frame-ancestors con un'origine specifica). Progetti la policy in modo da consentire questi casi e negare tutti gli altri.
Approccio combinato
Imposti sia X-Frame-Options (per i browser meno recenti) sia CSP frame-ancestors (per i browser moderni) per ottenere la massima copertura. Quando sono presenti entrambi, frame-ancestors ha la precedenza nei browser che supportano CSP. L'invio di entrambi garantisce la protezione dal clickjacking in tutti gli user agent.
Rischi degli iframe same-origin
Anche gli iframe same-origin possono comportare rischi: un XSS memorizzato in una pagina incorporata potrebbe accedere alla pagina principale tramite parent.document se l'origine è la stessa. Utilizzi sandbox senza allow-same-origin per gli iframe same-origin che non necessitano dell'accesso alla pagina principale, così da limitare i danni derivanti dalle vulnerabilità dei contenuti incorporati.
Testare la protezione
Verifichi la protezione dal clickjacking: utilizzi la scheda Rete del browser per controllare gli header della risposta e verificare la presenza di X-Frame-Options o CSP frame-ancestors. Strumenti come securityheaders.com analizzano gli header. Crei una pagina HTML di test con un iframe che punta al proprio sito e verifichi che il caricamento non riesca.
Incorporamenti di terze parti
Quando incorpora contenuti di terze parti (YouTube, Google Maps), è il sito che esegue l'incorporamento: si assicuri che il servizio incorporato consenta l'incorporamento secondo la propria policy X-Frame-Options. Non è possibile incorporare un sito che impedisce l'incorporamento: è una scelta intenzionale che protegge gli utenti del servizio incorporato.
CSP frame-ancestors nei meta tag
A differenza della maggior parte delle direttive CSP, frame-ancestors non può essere impostata tramite un meta tag HTTP-equiv: deve essere inviata come header di risposta HTTP. In questo modo si impedisce agli aggressori di rimuovere la protezione manipolando l'HTML incorporato prima che il browser legga i meta tag.
Verifica delle conoscenze
Perché il codice JavaScript di frame busting è una difesa inaffidabile contro il clickjacking?
Riepilogo
Il clickjacking incorpora pagine autenticate in iframe trasparenti per dirottare i clic. La difesa consiste negli header lato server X-Frame-Options: DENY o CSP frame-ancestors: none. Imposti entrambi per garantire la compatibilità tra browser. Il frame busting con JavaScript non è affidabile: utilizzi sempre gli header HTTP. frame-ancestors offre una allowlist granulare di origini attendibili, cosa che X-Frame-Options non consente.
Domande Frequenti
La lezione «Sicurezza degli iframe: clickjacking e X-Frame-Options» è gratuita?
Sì — il testo completo di «Sicurezza degli iframe: clickjacking e X-Frame-Options» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso HTML Academy, passa a CoddyKit PRO. Il corso HTML Academy include 4 lezioni in totale.
Cosa imparerò in «Sicurezza degli iframe: clickjacking e X-Frame-Options»?
Prevenire gli attacchi di clickjacking con X-Frame-Options e CSP Eserciti HTML Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare HTML Academy?
Non è richiesta alcuna esperienza precedente. HTML Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «Sicurezza degli iframe: clickjacking e X-Frame-Options»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione HTML Academy?
Sì. Ogni lezione HTML Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- L’elemento iframe: src e sandbox
- Sicurezza degli iframe: clickjacking e X-Frame-Options
- Gli elementi embed e object
- Caricamento differito degli iframe