Command Palette

Search for a command to run...

Glossario XSS (Cross-Site Scripting)

Cos’è XSS (Cross-Site Scripting)?

Cross-Site Scripting, o XSS, è un difetto di sicurezza nei siti web che consente agli aggressori di aggiungere script dannosi alle pagine web. La maggior parte delle volte, questi script sono scritti in JavaScript.

Se qualcuno visita una pagina colpita da XSS, il suo browser esegue lo script dell’aggressore. Questo può portare al furto di cookie, sessioni compromesse o azioni intraprese senza il permesso dell’utente.

XSS, come l’SQL Injection, è regolarmente elencato nella OWASP Top 10 come una delle vulnerabilità più comuni delle applicazioni web.

plexicus-xss-attack-ilustration

Come funziona XSS?

XSS spesso prende di mira applicazioni web che non controllano e puliscono correttamente l’input dell’utente.

Ad esempio, se una casella di commento consente HTML o JavaScript grezzo senza alcun filtro, un aggressore potrebbe aggiungere codice come questo:

<script>alert('Hacked!');</script>

Quando le vittime visualizzano la pagina, il codice dannoso viene eseguito nel loro browser.

Perché XSS è importante nella cybersecurity

XSS può portare a una violazione più grande :

  • Sottrazione dell’account (furto di cookie di sessione per impersonare gli utenti)
  • Furto di dati (cattura di input di moduli come password o carte di credito)
  • Attacchi di phishing (iniezione di moduli di login falsi)
  • Distribuzione di malware (reindirizzamento degli utenti a siti web dannosi)

Tipi di XSS

  1. XSS basato su DOM
  2. L’attacco avviene interamente nel browser manipolando il Document Object Model (DOM) senza coinvolgere il server.
  3. XSS memorizzato
  4. Lo script dannoso è memorizzato permanentemente sul server, come nel database o nella pagina del profilo.
  5. XSS riflesso
  6. Lo script è riflesso da un server web (ad esempio, nell’URL o nel messaggio di errore), lo script verrà eseguito quando la vittima clicca sul link creato dagli attaccanti.

Come prevenire XSS

  • Sanitizzazione degli input e codifica degli output: pulire sempre i dati di input dell’utente prima di elaborarli, trasformando l’input dell’utente in un formato sicuro
  • Utilizzare Content Security Policy (CSP): limita quali script possono essere eseguiti nel browser.
  • Evitare eval() e JavaScript inline: per ridurre i rischi di iniezione.
  • Test di sicurezza (DAST/IAST): eseguire test di sicurezza per rilevare vulnerabilità precocemente

Esempio nel mondo reale - Samy worm (MySpace, 2005)

Cosa è successo: Samy Kamkar ha pubblicato un profilo MySpace che conteneva un payload di stored XSS. Quando altri utenti visualizzavano il profilo, il payload veniva eseguito nei loro browser, (a) aggiungeva Samy come amico, (b) aggiungeva la frase “Samy è il mio eroe” ai loro profili, e (c) si replicava nelle pagine dei profili di quegli utenti.

Impatto: Il worm si è auto-propagato a ~1 milione di utenti entro ~20 ore, costringendo MySpace a essere offline temporaneamente.

Perché ha funzionato: MySpace permetteva HTML/attributi non scappati nei campi del profilo, abilitando l’esecuzione di script memorizzati nei browser dei visitatori.

Lezioni / correzione: Corretta codifica dell’output, sanitizzazione dell’input, rimozione di HTML nei campi del profilo e rapida applicazione di patch. Samy ha successivamente affrontato conseguenze legali e MySpace ha implementato filtri.

Termini correlati

Prossimi Passi

Pronto a proteggere le tue applicazioni? Scegli il tuo percorso.

Unisciti a oltre 500 aziende che già proteggono le loro applicazioni con Plexicus

SOC 2 Compliant
ISO 27001 Certified
Enterprise Ready