Protezione contro SQL Injection | Aulab
TECH SUMMER LAB 🚀 Open Month
| 6 lezioni gratuite per orientarti al meglio e iniziare a costruire il tuo futuro digitale! Iscriviti gratis

GUIDE PER ASPIRANTI PROGRAMMATORI

Protezione contro SQL Injection

Una delle vulnerabilità più diffuse in ambito PHP è l’SQL Injection, cioè la possibilità per un utente di manipolare una query SQL inserendo comandi malevoli all’interno dei campi di input. Questo tipo di attacco può causare danni considerevoli: dalla lettura non autorizzata di dati sensibili fino alla loro cancellazione o modifica. Per difendersi da questi…

Lezione 24 / 25
Enza Neri
Immagine di copertina

Vuoi avviare una nuova carriera o fare un upgrade?

Trova il corso Digital & Tech più adatto a te nel nostro catalogo!

Una delle vulnerabilità più diffuse in ambito PHP è l’SQL Injection, cioè la possibilità per un utente di manipolare una query SQL inserendo comandi malevoli all’interno dei campi di input. Questo tipo di attacco può causare danni considerevoli: dalla lettura non autorizzata di dati sensibili fino alla loro cancellazione o modifica. Per difendersi da questi scenari, il progetto utilizza query preparate con PDO, che separano in modo netto il codice SQL dai dati forniti dall’utente.

Esempio:

$stmt = $pdo->prepare("SELECT * FROM utenti WHERE username = ?");
$stmt->execute([$username]);

In questo codice, il punto interrogativo (?) rappresenta un segnaposto, noto anche come placeholder. Quando la query viene eseguita tramite il metodo execute(), il valore fornito viene associato in modo sicuro al segnaposto, senza essere interpretato come parte della struttura SQL. In altre parole, il motore di database distingue in modo chiaro tra comandi e dati, impedendo che input potenzialmente dannoso venga eseguito come codice SQL.

Separare dati e logica: la chiave per prevenire le SQL Injection.

Questa separazione tra logica e contenuto è un principio fondamentale della programmazione web sicura: consente di difendersi efficacemente da tentativi di SQL Injection, anche in scenari complessi in cui l’utente inserisce caratteri speciali o stringhe strutturate con l’obiettivo di manipolare la logica della query.

Nel progetto, questa strategia è applicata in maniera sistematica in tutte le sezioni che interagiscono con il database. Nei file register.php e login.php, ad esempio, viene utilizzata per controllare e verificare le credenziali utente; in libri.php è impiegata sia per l’inserimento di nuovi record che per l’aggiornamento e la cancellazione. Questo approccio uniforme non solo rende il codice più sicuro, ma migliora anche la manutenibilità e la leggibilità complessiva dell’applicazione.

L’utilizzo di prepare e execute è da considerarsi oggi uno standard professionale, imprescindibile per qualsiasi progetto web che preveda interazioni SQL dinamiche. Inoltre, grazie a PDO, il codice può essere facilmente migrato verso altri tipi di database (PostgreSQL, SQLite, ecc.) senza modificare la logica applicativa.

Oltre a PDO, anche l’estensione MySQLi offre il supporto per le query preparate. Tuttavia, PDO è stato scelto in questo progetto per la sua flessibilità, portabilità e per la maggiore semplicità nella gestione delle eccezioni e degli errori, soprattutto in applicazioni multipiattaforma o predisposte per una futura evoluzione.

Hai bisogno di informazioni? 🙋🏻‍♂️

Parliamone! Scrivici su Whatsapp e risponderemo a tutte le tue domande per capire quale dei nostri corsi è il più adatto alle tue esigenze.

Oppure chiamaci al 800 128 626