home / risorse / vulnerabilità / A05

OWASP Top 10 2025 · posizione 5

Injection (OWASP A05): SQL injection e XSS

L'input dell'utente viene interpretato come parte di una query, di un comando o di un contenuto. Nel 2025 la categoria scende dal terzo al quinto posto, ma resta tra le più sfruttate.

cos'è

Il dato diventa istruzione.

La vulnerabilità nasce quando l'applicazione non separa ciò che è dato da ciò che è comando. Un valore che dovrebbe restare un testo viene eseguito come parte di una query, di un comando del sistema o di una pagina.

Include le query SQL, i comandi del sistema operativo e il cross-site scripting (XSS), in cui un contenuto non codificato viene eseguito nel browser di un altro utente.

forme comuni

Le forme più frequenti.

1

SQL

Input inserito in una query al database senza separazione tra dati e istruzioni.

2

Comandi di sistema

Valori dell'utente passati a un comando del sistema operativo.

3

Cross-site scripting (XSS)

Contenuti non codificati che il browser esegue, con l'accesso della sessione della vittima.

4

Template e query lato server

Motori di template o linguaggi di query che interpretano input non attendibili.

impatto tipico

Cosa può succedere all'azienda.

Lettura o modifica del database

Dati di clienti e ordini letti o alterati.

Esecuzione di comandi

Il server esegue operazioni non previste dall'applicazione.

Sessioni altrui compromesse

Nel caso dell'XSS, azioni eseguite a nome di un altro utente.

Furto di dati di accesso

Credenziali o token raccolti dal browser della vittima.

come lo verifichiamo

Si segue il dato dal punto in cui entra a quello in cui viene usato.

01

Mappa degli input

Si individuano tutti i punti in cui l'utente invia dati.

02

Percorso del dato

Si verifica dove finisce ogni input: query, comando, pagina.

03

Risposta osservata

Si confronta il comportamento atteso con quello reale, in un ambiente di test.

04

Revisione

Una persona valuta l'impatto e assegna la gravità.

come si corregge

La difesa è separare dati e istruzioni.

Da fare

  • Usare query parametrizzate
  • Codificare l'output in base al contesto in cui appare
  • Validare gli input con un elenco di valori consentiti
  • Limitare i privilegi dell'account del database

Da evitare

  • Concatenare input nelle query
  • Filtrare solo alcune parole: si aggirano facilmente
  • Mostrare contenuti dell'utente senza codifica
Un filtro su alcune parole non è una difesa. Chi filtra solo alcuni caratteri lascia aperta la classe intera. La correzione giusta cambia il modo in cui il dato viene usato.

Vuoi verificare gli input della tua applicazione?

Il test OWASP Top 10 copre injection e XSS insieme alle altre categorie.

Richiedi accesso