Please enable JavaScript.
Coggle requires JavaScript to display documents.
Progetto web sicuro vernero pt2 - Coggle Diagram
Progetto web sicuro vernero pt2
STEP 3 — VISUALIZZARE I DATI DELLA TABELLA UTENTI
Ora che sappiamo:
la query ha 4 colonne
le colonne 2, 3 e 4 sono visibili
si costruisce la query:
' UNION SELECT id, username, password, ruolo FROM utenti --
🎯 Risultato
Nel catalogo dei film vengono visualizzati i dati degli account presenti nel database:
username
password
ruolo
PERCHÉ L'ATTACCO È POSSIBILE?
Il problema fondamentale è
che l'applicazione inserisce direttamente l'input dell'utente nella query SQL.
Quindi l'utente può fornire non soltanto:
Quindi l'utente può fornire non soltanto:
DATI
ma anche:
ISTRUZIONI SQL
La vulnerabilità nasce proprio dalla mancata separazione tra:
input dell'utente → dati
e
query SQL → istruzioni
SOLUZIONE — PREPARED STATEMENTS
Per correggere la vulnerabilità nel login vengono utilizzate
le prepared statements.
La query viene preparata utilizzando dei segnaposto ?:
SELECT * FROM utenti WHERE username = ? AND password = ?
🔑 Concetto fondamentale
La query viene separata dai dati.
L'input viene trattato come testo, non come istruzione SQL.
"ss" cosa significa?
Indica che i due parametri sono stringhe.
CORREZIONE DEL CATALOGO FILM
Anche il campo di ricerca viene protetto utilizzando una prepared statement:
SELECT id, titolo, regista, anno FROM film
WHERE titolo LIKE ? OR genere LIKE ?
Il contenuto inserito nella ricerca viene salvato in:
$parametro
e utilizzato come parametro della query.
Anche in questo caso viene specificato:
"ss"
per indicare che i valori sono stringhe.
VERIFICA FINALE
Dopo aver corretto il codice, si riprova l'attacco utilizzando il payload precedente:
' UNION SELECT id, username, password, ruolo FROM utenti --
Dopo la correzione
✅ L'attacco non funziona
→ i dati degli utenti non vengono più esposti.