
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…


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.
CONTENUTI GRATUITI IN EVIDENZA
Guide per aspiranti programmatori 👨🏻🚀
Vuoi muovere i primi passi nel Digital e Tech? Abbiamo preparato alcune guide per aiutarti a orientarti negli ambiti più richiesti oggi.