Il Cross-Site Scripting (XSS) è una delle vulnerabilità più comuni e pericolose nelle applicazioni web. Si verifica quando un’applicazione include dati non verificati in una pagina web inviata al browser dell’utente, permettendo l’esecuzione di codice client-side (solitamente JavaScript) malevolo.
Esistono tre tipologie principali:
- Stored XSS: il codice malevolo viene salvato permanentemente sul server (es. in un commento di un blog) e servito a ogni utente che visita la pagina.
- Reflected XSS: lo script viene “riflettuto” dal server tramite un parametro nell’URL o in un form, colpendo l’utente che clicca su un link appositamente preparato.
- DOM-based XSS: la vulnerabilità risiede interamente nel codice JavaScript del client, che elabora dati insicuri senza passare dal server.
Ingegneristicamente, la prevenzione dell’XSS richiede una rigorosa politica di input validation e soprattutto di output encoding: ogni dato proveniente dall’utente deve essere “sanificato” o convertito in testo semplice prima di essere inserito nel codice HTML della pagina. L’uso di Content Security Policy (CSP) moderne è un ulteriore livello di difesa cruciale.