Che cos'è il Clickjacking?
Il clickjacking si verifica quando un attaccante camuffa un elemento di una pagina web o lo rende invisibile sopra una pagina esistente, nel tentativo di reindirizzarti o farti cliccare su qualcos'altro. Quando clicchi o vieni indotto a cliccare su un altro elemento, puoi accidentalmente visitare siti web dannosi, fornire le tue credenziali o divulgare informazioni sensibili. Potresti persino acquistare prodotti online da un sito falso e truffaldino.
Gli attacchi di clickjacking vengono solitamente eseguiti mostrando una pagina o un elemento HTML invisibile, tipicamente all'interno di un iframe, sopra una pagina esistente che l'utente vede già. Questo ti fa credere di cliccare sulla pagina effettivamente visibile, ma in realtà stai cliccando su un pulsante o elemento invisibile collegato a una pagina aggiuntiva che è stata sovrapposta.
Se tutto ciò sembra un po' confuso, abbi pazienza. In questa guida analizzeremo cosa sono gli attacchi di clickjacking e come funzionano. Saprai come prevenire il clickjacking e cosa puoi fare per contrastare questi casi.
.jpg)
Perché la prevenzione del Clickjacking è importante nel 2026?
Il clickjacking è importante perché trasforma un'interazione innocua in qualcosa di pericoloso che potrebbe avere conseguenze devastanti. Non sei nemmeno consapevole della sovrapposizione che è stata posizionata sulla tua pagina. È invisibile a occhio nudo e può modificare l'interfaccia della tua pagina per indirizzare erroneamente le tue azioni. Se accedi a un sito dannoso con account social già autenticati, l'attaccante può rubare le tue credenziali sensibili e altri dettagli.
Il clickjacking è importante anche perché un singolo clic o un clic nascosto può modificare le impostazioni del tuo account, farti iscrivere forzatamente ad altri contenuti e seguire pagine senza il tuo consenso. Immagina se un hacker riuscisse a ottenere le tue credenziali inducendoti a cliccare su una pagina tramite clickjacking. Potrebbe quindi prendere il controllo del tuo account e farti compiere attività dannose senza che tu te ne accorga.
Il clickjacking eroderà collettivamente la fiducia dei tuoi clienti nella tua organizzazione, aumenterà i costi di supporto e renderà più difficile prevenire questi attacchi. Più diventano frammentati e diffusi su diversi servizi, più difficile sarà gestirli. E la parte peggiore è che gli utenti non possono distinguere tra le sovrapposizioni del tuo sito e quelle ingannevoli perché rimangono nascoste.
Come funzionano gli attacchi di Clickjacking?
Un esempio comune di attacco clickjacking sono i pulsanti invisibili “acquista” e “mi piace” su cui clicchi pensando di chiudere un popup. Un altro scenario classico è posizionare un pulsante di controllo “abilita” o “attiva” nascosto nella parte inferiore di un'interfaccia di videogioco a cui stai giocando.
Ricorda che il clickjacking non è phishing. Il phishing si basa sul convincerti o persuaderti a compiere un'azione. Ma in un attacco clickjacking, vieni ingannato o truffato facendoti cliccare in un punto diverso da quello previsto. Il clickjacking sembra più naturale perché non ci pensi due volte e non vedi arrivare l'attacco (non è così ovvio).
I clic camuffati possono anche confermare acquisti, OTP e trasferimenti senza necessità di conferma o autenticazione. Gli attacchi di clickjacking possono utilizzare elementi dell'interfaccia per concedere permessi che possono essere cliccati con false pretese. Può anche attivare fotocamera, microfono e impostazioni di localizzazione ed esporre la privacy tramite sovrapposizioni ingannevoli.
Quindi, un attacco clickjacking è un tipo di bug del browser? Non proprio, ma può abusare delle funzionalità standard del sito come layering e iframe.
L'autenticazione single sign-on può prevenirlo? No, non funziona perché un attacco clickjacking può manipolare la tua interfaccia utente mentre il tuo SSO si occupa solo della gestione dell'identità.
Sia le app mobili che le app ibride possono essere impattate dagli attacchi di clickjacking, soprattutto se vengono utilizzate per mostrare contenuti esterni.
Come rilevare le vulnerabilità di Clickjacking?
Uno dei modi migliori per rilevare le vulnerabilità di clickjacking è provare a incorniciare la tua pagina web da altri server.
- Apri un ambiente locale e crea un semplice file HTML. Chiamiamolo il tuo file HTML Proof of Concept (PoC). Ora, usa un tag <iframe> all'interno del body HTML. Inserisci l'URL della pagina sensibile che vuoi testare con il tuo tag
<iframe>. - Sostituisci l'URL di destinazione con l'URL della pagina che vuoi testare. Salva e visualizza la pagina nel browser. Se il contenuto della pagina di destinazione viene caricato correttamente (quello che hai indicato nel tag iframe), allora il tuo sito è probabilmente vulnerabile. Se non si carica, allora sei al sicuro.
- Questo è il primo modo per rilevare una vulnerabilità di clickjacking che chiamiamo test manuale.
Un altro modo per scoprirlo è testare i bypass delle difese. Puoi usare uno script frame-busting semplice se JavaScript è stato disabilitato dal browser. Puoi anche utilizzare tecniche avanzate come il double framing per la prevenzione e il test degli attacchi di clickjacking.
Gli scanner automatici di vulnerabilità possono analizzare le web app alla ricerca di intestazioni HTTP anti-clickjacking mal configurate e alcuni possono ispezionare le intestazioni di risposta HTTP nei tab di rete. Qualsiasi pagina priva di intestazioni come X-Frame-Options e Content-Security-Policy è vulnerabile.
Esistono anche strumenti che possono registrare i tuoi clic sulle pagine di destinazione e riprodurli con sovrapposizioni di interfaccia di attacco per simulare scenari di attacco reali. Questi possono aiutarti a trovare varie vulnerabilità di clickjacking.
Come prevenire gli attacchi di Clickjacking?
Ecco alcuni modi per prevenire gli attacchi di clickjacking:
Utilizza Permissions Policy per controllare le funzionalità del browser
I browser moderni ti permettono di limitare quali funzionalità possono essere accessibili dagli iframe incorporati. Imposta l'intestazione Permissions-Policy per disabilitare fullscreen, geolocalizzazione, fotocamera, microfono e API di richiesta di pagamento. Questo impedisce agli attaccanti di dirottare funzionalità sensibili del browser tramite sovrapposizioni. Anche se riescono a ingannarti nel cliccare, non possono attivare permessi pericolosi senza il tuo consenso esplicito. È un livello di difesa intelligente che limita ciò che gli attaccanti possono effettivamente fare con le loro sovrapposizioni.
Applica restrizioni sandbox agli iframe incorporati
Quando incorpori contenuti esterni in iframe, l'attributo sandbox li blocca per impostazione predefinita. Blocca script, form e popup a meno che non siano strettamente necessari. Usa i valori allow con attenzione—concedi allow-scripts solo se l'iframe ha davvero bisogno di JavaScript ed evita allow-same-origin se non necessario. Questa strategia di contenimento impedisce ai contenuti incorporati dannosi di accedere alla tua pagina principale o ai dati utente. Testa regolarmente le configurazioni sandbox per assicurarti che funzionino come previsto.
Monitora il comportamento dei clic degli utenti con Event Listener
Aggiungi event listener JavaScript per tracciare da dove provengono effettivamente i clic. Verifica se i clic provengono da elementi legittimi dell'interfaccia o da posizioni che non corrispondono ai pulsanti visibili. Confronta event.target con event.currentTarget per individuare discrepanze. Questo aiuta a rilevare clic che sembrano indirizzati a elementi visibili ma in realtà colpiscono livelli invisibili sottostanti. Anche se non fermerà attaccanti determinati, intercetta i trucchi comuni di sovrapposizione e crea tracce di audit per i team di sicurezza.
Utilizza rilevamento tramite Machine Learning e AI
Modelli ML avanzati possono ora riconoscere pattern di clickjacking analizzando layout di pagina e interazioni utente. Questi sistemi individuano sovrapposizioni iframe sospette, posizionamenti insoliti di elementi e anomalie comportamentali in tempo reale. Modelli CNN e reti neurali addestrati su dataset di phishing possono identificare minacce prima che gli utenti vengano colpiti. Con il miglioramento di queste tecnologie, saranno in grado di rilevare attacchi sofisticati che sfuggono alle difese tradizionali. Implementa il rilevamento automatico delle minacce insieme alle intestazioni HTTP per una protezione più profonda.
Utilizza il browser fingerprinting per identificare attività sospette
Crea impronte digitali uniche per ogni visitatore in base a browser, dispositivo e caratteristiche hardware. Confronta le impronte con il tuo database di utenti noti. Se rilevi clic da un nuovo dispositivo o posizione mai utilizzati prima, segnala per una verifica aggiuntiva. Il fingerprinting individua emulatori, VPN e strumenti di spoofing utilizzati dagli attaccanti per mascherare la propria identità. Combinato con l'analisi comportamentale, aiuta a distinguere utenti reali da bot e frodatori che tentano attacchi di clickjacking.
Mostra indicatori di autenticità del sito agli utenti
Mostra watermark visivi o badge di prova di origine che dimostrano che la tua pagina è autentica e non alterata. Quando gli utenti vedono questi indicatori sparire o cambiare, è un segnale di una pagina falsificata o di un attacco di sovrapposizione. Il codice difensivo dell'interfaccia può rilevare quando la tua pagina viene incorniciata e mostrare automaticamente avvisi. Gli utenti imparano a fidarsi di questi segnali visivi, rendendo più difficile per gli attaccanti ingannarli con elementi nascosti.
Best practice per la prevenzione del Clickjacking
Ecco alcune delle best practice da seguire per la prevenzione del clickjacking:
1. Imposta le intestazioni HTTP X-Frame-Options
La prima linea di difesa è impostare l'intestazione X-Frame-Options sul tuo server. Questo indica ai browser se la tua pagina può essere caricata all'interno di un iframe o frame. Hai tre opzioni principali:
- 'DENY' è la scelta più sicura e blocca qualsiasi dominio dal visualizzare i tuoi contenuti in un frame.
- 'SAMEORIGIN' consente solo al tuo dominio di incorniciare la pagina, utile se hai bisogno di framing interno.
- 'ALLOW-FROM uri' permette di inserire in whitelist domini specifici di fiducia, ma usalo con cautela a causa di problemi di compatibilità tra browser.
2. Implementa Content Security Policy con frame-ancestors
CSP è il metodo moderno per prevenire il clickjacking ed è più flessibile di X-Frame-Options. Aggiungi la direttiva frame-ancestors alla tua intestazione Content Security Policy e specifica quali domini possono incorniciare i tuoi contenuti. Impostalo su 'none' se non hai bisogno di alcun framing, oppure specifica i domini di fiducia usando la sintassi CSP.
3. Proteggi i cookie di sessione con l'attributo SameSite
Contrassegna tutti i cookie di sessione con l'attributo SameSite impostato su 'Strict' o 'Lax'. Questo impedisce che i cookie vengano inviati quando la tua pagina viene caricata in un iframe da un altro dominio.
Combinato con altre difese, questo blocca gli attaccanti dal dirottare sessioni utente autenticate tramite attacchi di framing. La protezione è più forte se impostata su 'Strict', ma 'Lax' offre un buon equilibrio tra sicurezza ed esperienza utente per la navigazione cross-site legittima.
4. Aggiungi codice JavaScript frame-busting
Includi uno script frame-buster JavaScript nella sezione <head> del tuo documento HTML. Questo script verifica se la tua pagina viene caricata all'interno di un frame e, se rilevato, esce automaticamente dal frame. È un semplice livello di backup che funziona sulla maggior parte dei browser moderni. Assicurati però che il tuo codice frame-busting sia solido; evita tecniche obsolete che gli attaccanti possono facilmente aggirare con metodi avanzati come il double framing.
5. Usa window.confirm() per azioni critiche
Prima di consentire agli utenti di completare transazioni sensibili o modificare account all'interno di iframe, utilizza il metodo window.confirm() per forzare una conferma esplicita. Questo crea una finestra di dialogo che richiede agli utenti di riconoscere attivamente ciò che stanno per fare. Anche se altre protezioni vengono aggirate, questo aggiunge un ulteriore livello di controllo e intercetta clic accidentali su cui gli attaccanti fanno affidamento.
6. Testa regolarmente le tue vulnerabilità
Crea un semplice file HTML localmente con un tag iframe che punta all'URL del tuo sito. Prova a caricarlo nel browser per vedere se la tua pagina appare all'interno del frame. Se si carica correttamente, sei vulnerabile e devi implementare le intestazioni sopra indicate. Se non si carica, le tue protezioni funzionano. Usa scanner automatici di vulnerabilità per verificare la presenza delle intestazioni X-Frame-Options e CSP nelle risposte HTTP. Il test manuale combinato con l'automazione ti offre una copertura completa.
7. Monitora le configurazioni errate
Utilizza strumenti che possono ispezionare direttamente le intestazioni di risposta HTTP dai tab di rete del browser. Cerca le intestazioni X-Frame-Options e Content-Security-Policy su ogni pagina. Qualsiasi pagina priva di queste intestazioni è un potenziale bersaglio. Alcuni scanner automatici possono anche testare i bypass delle difese e segnalare debolezze nell'implementazione.
8. Inserisci passaggi di doppia conferma
Fai in modo che gli utenti confermino due volte prima di consentire loro di eseguire un'azione esplicita e altamente sensibile (come trasferimenti di denaro o cancellazione di account). Non affidarti solo a script lato client.
9. Forma i tuoi utenti
Informa i tuoi dipendenti sugli attacchi di clickjacking e su come funzionano. Educa riguardo sovrapposizioni sospette, popup strani e richieste di permessi improvvise. Qualunque misura tu adotti per la prevenzione del clickjacking, verifica sempre con la cheat sheet OWASP sul clickjacking e assicurati che il tuo sito sia davvero protetto.
Conclusione
Il clickjacking sta diventando un problema comune al giorno d'oggi ma non preoccuparti, ora sai cosa aspettarti lato browser e client. I protocolli gestiti dal server possono limitare l'uso degli iframe nel browser e difendere dagli attacchi di clickjacking.
L'efficacia di un attacco clickjacking dipenderà anche dal comportamento lato browser. Se ti attieni ai migliori standard web e alle pratiche di navigazione sicura, tu e i tuoi utenti sarete probabilmente al sicuro. Rimani vigile, verifica la conformità del browser e non dimenticare di sfruttare appieno X-Frame-Options e Content Security Policy per una protezione adeguata!
Domande frequenti
Il clickjacking si verifica quando gli attaccanti inducono gli utenti a cliccare su elementi che non intendono selezionare. Un sito web dannoso sovrappone pulsanti o link invisibili sopra contenuti legittimi. Quando clicchi su quello che pensi sia un pulsante normale, in realtà stai attivando qualcosa di nascosto dietro di esso. L'attaccante controlla cosa succede dopo. I tuoi clic potrebbero attivare azioni indesiderate come modificare le impostazioni dell'account, pubblicare contenuti o autorizzare permessi. Potresti non accorgerti nemmeno che è successo.
L'assenza delle intestazioni X-Frame-Options è la principale causa del funzionamento del clickjacking. Se il tuo sito web non imposta questa intestazione, gli aggressori possono incorporarlo in iframe. Non utilizzare le intestazioni Content Security Policy ti rende vulnerabile. Alcuni siti non convalidano correttamente le azioni degli utenti, facilitando l'inganno dei visitatori. I siti web che non implementano tecniche anti-framing sono bersagli. I vecchi framework senza protezioni integrate sono particolarmente a rischio. Le applicazioni che gestiscono operazioni sensibili necessitano di adeguate difese, altrimenti il clickjacking avrà successo.
Gli sviluppatori dovrebbero impostare l'intestazione X-Frame-Options su DENY o SAMEORIGIN. Questo impedisce ai browser di caricare il tuo sito all'interno di iframe. Puoi anche utilizzare la Content Security Policy con la direttiva frame-ancestors per controllare l'incorniciamento. Verifica tutte le azioni degli utenti rilevanti, in particolare quelle sensibili come pagamenti o modifiche delle autorizzazioni. Aggiungi indicatori visivi affinché gli utenti sappiano quando stanno interagendo con pulsanti reali. Testa regolarmente il tuo sito per individuare vulnerabilità di framing. Utilizza codice JavaScript frame-busting come protezione di backup se sono coinvolti browser meno recenti.
X-Frame-Options è un'intestazione HTTP che indica ai browser se il tuo sito può essere inserito in un frame. Quando impostato su DENY, il tuo sito non verrà caricato all'interno di alcun iframe, punto. SAMEORIGIN consente il framing solo dallo stesso dominio. ALLOW-FROM permette di specificare i domini affidabili che possono effettuare il framing. I browser rispettano questa intestazione e bloccano i tentativi di framing da altri siti. Gli aggressori non possono sovrapporre i tuoi contenuti senza il tuo permesso. Questa semplice intestazione elimina lo strumento principale utilizzato dagli aggressori per il clickjacking, rendendo il loro compito impossibile.
Puoi verificare le intestazioni di risposta utilizzando strumenti online o gli strumenti per sviluppatori del browser. Cerca l'intestazione X-Frame-Options nelle risposte HTTP del tuo sito. Se manca, sei vulnerabile. Prova a creare un file HTML di test che includa il tuo sito in un iframe e verifica se viene caricato. Se appare all'interno dell'iframe, il clickjacking è possibile. I test manuali sono utili, ma gli scanner di sicurezza automatizzati possono individuare i problemi più rapidamente. Testa sia il dominio principale che i sottodomini. Ricorda di effettuare i test dopo aver apportato modifiche per confermare che la correzione funzioni effettivamente.
Per prima cosa, aggiungi l'intestazione X-Frame-Options a tutte le tue risposte. Impostala su DENY a meno che non sia necessario il framing. Utilizza le intestazioni Content Security Policy per una protezione aggiuntiva. Forma gli utenti affinché riconoscano comportamenti insoliti o richieste inattese. Non presumere che i clic siano sempre intenzionali da parte dei visitatori. Implementa token CSRF per le azioni importanti. Mantieni framework e librerie aggiornati poiché correggono vulnerabilità. Esegui regolarmente audit di sicurezza per individuare configurazioni errate. Testa spesso le tue difese per assicurarti che funzionino effettivamente quando si verificano attacchi.


