Corsi on-line

PDO e sanitizzazione dei dati

Come abbiamo ripetuto più volte, con il rilascio della versione 5.5 di PHP le mysql functions saranno considerate deprecate e si dovranno utilizzare al loro posto delle estensioni alternative come per esempio MySQLi o PDO; frequentando community di supporto per Web developers ho notato che soprattutto quest’ultimo genera della perplessità relativamente alla sicurezza dei dati per le query.

Si prenda per esempio un semplice script che prevede il binding dei parametri e l’aggiornamento di record con vincolo tramite clausola WHERE:

$db = connect();
$qr = $db->prepare('UPDATE Utenti SET username=:nome WHERE Utente_ID=:id LIMIT 1');
$qr->bindParam(":id", $utenteLoggato->utente_ID, PDO::PARAM_INT);
$qr->bindParam(":nome", $_POST['nome'], PDO::PARAM_STR);
$qr->execute();

Ora, la logica del sorgente proposto non è particolarmente complessa, ma un utente alle prime armi potrebbe legittimamente chiedersi: saranno necessarie altre operazioni per la sanitizzazione dei parametri inviati tramite metodo? Inoltre, come verranno gestite le entità HTML?

Per rispondere, diciamo subito che in presenza di prepared statements non sarà richiesto il quoting dei parametri, per cui l’escape verrà gestito automaticamente senza la necessità di applicare ulteriori filtri; in questo modo l’applicazione sarà al riparo da SQL Injections a patto di applicare prepared statements per tutti gli argomenti coinvolti dalla query. Nel caso voleste approfondire l’argomento, potrebbe essere utile la consultazione di un post precedentemente pubblicato su questo blog.

Riguardo alle entità HTML il discorso è invece differente, si tenga infatti conto che PDO è e rimane unicamente una libreria per l’interazione con le basi di dati, per cui non prevede comportamenti specifici per la presenaa di markup all’interno dei parametri; per questo motivo funzioni come per esempio htmlspecialchars() dovranno comunque essere utilizzate nel caaso in cui si preveda la stampa a video dei dati su pagina Web.

Post correlati
I più letti del mese
Tematiche