Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Clickjacking: come difendersi

Difendersi dal Clickjacking e strategie per la sicurezza. Come bloccare iframe malevoli con X-Frame-Options e Content Security Policy.
Difendersi dal Clickjacking e strategie per la sicurezza. Come bloccare iframe malevoli con X-Frame-Options e Content Security Policy.
Link copiato negli appunti

Nel mondo della sicurezza web, il clickjacking è una minaccia subdola ma efficace, in grado di compromettere la fiducia degli utenti e la sicurezza delle applicazioni. Questo attacco sfrutta le funzionalità dei browser per indurre un utente a cliccare su elementi invisibili o mascherati che appaiono diversi da ciò che sembrano. Nonostante la sua semplicità, il clickjacking può avere gravi conseguenze, come il furto di informazioni personali, l'esecuzione di azioni non autorizzate e la compromissione di account. In questa analisi, esploreremo come il Frame Busting e l'intestazione X-Frame-Options rappresentino due delle strategie principali per contrastare questa minaccia.

Cos'è il Clickjacking

Il clickjacking, anche noto come UI redressing, consiste nel sovrapporre un'interfaccia utente malevola a un contenuto legittimo, solitamente tramite frame HTML o tecniche di CSS. L'utente, convinto di interagire con un bottone, un link o un modulo innocuo, in realtà esegue un'azione dannosa.

Un esempio classico è il posizionamento trasparente di un pulsante "Condividi" o "Acquista" su un bottone fittizio come "Chiudi pubblicità". Il clic dell'utente viene catturato dal contenuto malevolo, attivando un comportamento non previsto. In ambienti web moderni, dove le sessioni utente possono essere altamente privilegiate (es. amministratori di sistema, gestori di e-commerce), un clickjacking riuscito può provocare conseguenze disastrose.

Come funziona l'attacco

Il clickjacking si basa sull'uso degli iframe HTML, che permettono di incorporare una pagina web all'interno di un'altra. Un attaccante crea una pagina malevola e, tramite iframe trasparente o semi-trasparente, carica una pagina vulnerabile. Dopodiché, posiziona l'iframe sopra un bottone, campo input, o qualsiasi elemento cliccabile.

L'utente, convinto di cliccare un bottone innocuo, sta in realtà interagendo con l'iframe, eseguendo azioni pericolose come:

  • L'attivazione di un trasferimento di fondi.
  • La modifica di impostazioni di sicurezza.
  • L'autorizzazione ad applicazioni di terze parti.
  • Il reset della password di un account.
  • Strategie di difesa

    L'intestazione HTTP X-Frame-Options è una protezione server-side che informa il browser se la pagina può essere caricata dentro un iframe. È uno dei metodi più semplici e supportati per mitigare i rischi di clickjacking.

    Le opzioni disponibili sono:

    • DENY
    • SAMEORIGIN
    • ALLOW-FROM

    Esempio in PHP:

    header("X-Frame-Options: SAMEORIGIN");

    Vantaggi:

    • Semplice da implementare.
    • Supportato dalla maggior parte dei browser moderni.
    • Blocco immediato della possibilità di framing.

    Limiti:

    • Non flessibile (es. ALLOW-FROM
    • Applicabile solo ai contenuti serviti da HTTP/S, quindi deve essere gestito lato server.
    • Non protegge se l'applicazione necessita legittimamente l'uso di iframe da altri domini.
    • Frame busting (Framebreaker)

      Il frame busting è una tecnica lato client, implementata via JavaScript, per impedire il caricamento della pagina in un iframe. Se la pagina si accorge di essere "incorniciata", forza l'uscita del frame ricaricandosi nel top-level browsing context:

      if (window.top !== window.self) {
          window.top.location = window.location;
      }

      Varianti moderne:

      if (top !== self) {
          top.location.href = self.location.href;
      }

      Vantaggi:

      • Protezione immediata, visibile anche lato client.
      • Può essere personalizzata in base a esigenze particolari.

      Limiti:

      • Gli attaccanti possono disabilitare l'esecuzione di JavaScript nel frame.
      • Può essere aggirata in determinati scenari.
      • Meno affidabile rispetto alle intestazioni HTTP.
      • Difese aggiuntive

        Una strategia moderna consiste nell'uso della Content Security Policy, in particolare con la direttiva frame-ancestors che offre un controllo più granulare sui contesti in cui la pagina può essere incorniciata:

        Content-Security-Policy: frame-ancestors 'self'

        Questa direttiva dice ai browser che solo lo stesso dominio (self) può incorniciare il contenuto.

        Vantaggi rispetto a X-Frame-Options:

        • Supporto per più domini.
        • Più flessibile e standardizzato.
        • Maggiore controllo e integrazione con altre regole CSP.

        X-Frame-Options solo CSP X-Frame-Options deprecato

        Best Practices

        • Implementa sia X-Frame-Options per una copertura massima (almeno finché tutti i browser supportano frame-ancestors
        • Valuta l'uso di iframe nella tua app
        • Controlla il referrer e l'origine delle richieste.
        • Usa sandboxing su iframe se necessario sandbox attribute allow-same-origin
        • Monitora e logga le violazioni CSP
        • Aggiorna i browser e le librerie client

        Conclusione

        Il clickjacking, sebbene semplice da eseguire, rappresenta una minaccia concreta e spesso trascurata. In un'epoca in cui le applicazioni web gestiscono dati sensibili, transazioni economiche, e accessi privilegiati, anche un singolo clic fuorviato può compromettere l'intero sistema. È fondamentale considerare la protezione contro questa vulnerabilità come parte integrante della strategia di sicurezza di qualsiasi applicazione web, sia essa pubblica, enterprise o governativa.

        Implementare difese come X-Frame-Options o la più moderna direttiva frame-ancestors all'interno della Content Security Policy (CSP) non è solo una best practice ma un requisito essenziale. Queste soluzioni lato server offrono protezione efficace e a basso costo contro la maggior parte degli attacchi di clickjacking. Il frame busting con JavaScript, pur essendo meno affidabile e più facilmente aggirabile, può fungere da ulteriore livello di protezione, specialmente nei casi in cui la CSP non sia ancora completamente supportata o configurata.

        Tuttavia, la sola protezione tecnica non è sufficiente. È altrettanto importante che i team di sviluppo adottino un approccio di sicurezza proattivo che includa la formazione continua, la revisione periodica del codice e l'uso di strumenti di analisi statici e dinamici. Anche l'infrastruttura deve essere mantenuta aggiornata per evitare exploit noti.

        Infine, la difesa dal clickjacking si inserisce in un contesto più ampio di security by design: progettare applicazioni web pensando sin dall'inizio alla sicurezza, non come un'aggiunta post-sviluppo. Ogni componente dell'applicazione — interfaccia, autenticazione, autorizzazione, e trasmissione dei dati — deve essere valutato in chiave difensiva.

Ti consigliamo anche