PDO, la sql injection e PHP Symfony

Blog, psicoterapia autogena di un web designer freelance

PDO, la sql injection e PHP Symfony - 25/04/2014
25/04/2014

Se ne parla da parecchio, nel web si trovano notizie su questo argomento già dal 2005, ma i tempi sembrano oramai maturi per iniziare le fasi per il passaggio: mysql_connect e le query di varia natura e genere con cui andiamo a gestire connessioni e interrogazioni ai database Mysql sono state deprecate. Dalla versione 5.1 in PHP è stato implementato PDO (PHP DATABASE OBJECT) un metodo veloce e a quanto pare molto più sicuro per gestire i nostri DB. Ma cosa è PDO? In parole povere è una classe ad oggetti, parliamo di php5 quindi doverosamente di OOP (programmazione orientata agli oggetti), che permette la gestione in un unica interfaccia di diverse tipologie di database come mysql, sqlite, oracle, Postgresql, sqlserver ecc.. possibilità questa che è sempre mancata in php. Ma soffermiamoci sul tema della sicurezza che nel nostro caso viene minato dalla sql injections, ovvero una serie di tecniche che sfruttano i canali di inserimento dei dati, per esempio i form o le query inviate senza il dovuto rewrite url degli indirizzi delle pagine che creiamo dinamicamente. Risulta molto più semplice di quanto si pensi poter avere accesso a montagne di dati comprensivi di username e password utilizzando questa tecnica se non ci siamo protetti in maniera adeguata. Esistono parecchi trucchetti di sintassi e di mestiere per evitare che questa tecnica possa permettere a dati fasulli destinati a tutto tranne un semplice insert di arrivare al database, molti di questi vengono insegnati ai nostri nuovi corsi di programmazione. Una libreria funzionale per proteggere i nostri database dalla sql injection è PDO_MYSQL che integra la protezione alle tecniche di sql injection più diffuse oltre a migliorare le performances e, come già detto sopra, poter gestire la migrazione a DB di altra tipologia senza problemi. Indipendentemente dalla libreria in questione rimangono valide tutte le opzioni per la protezione dei dati di accesso come distribuirli in differenti files e gestire le sessioni in maniera adeguata e sicura nel momento di un autenticazione da parte di un utente registrato. Torneremo su questo argomento in futuri blog, per il momento vi rimando alla guida ufficiale di PDO del sito php.net. Per quanto riguarda invece la programmazione a oggetti possiamo imparare a utilizzare Symfony, uno strumento open source per creare applicazioni web potenti in maniera piuttosto rapida utilizzando dei framework in php. Il sito di riferimento ufficiale è Symfony.com. Anche su questo torneremo a parlare prossimamente. Come il mondo del web anche quello della programmazione è in continua evoluzione, rimanere continuamente aggiornati è fondamentale e soprattutto per questo la formazione è uno step obbligato a cui tutti gli addetti ai lavori dovrebbero sottoporsi periodicamente cosa che, ovviamente, in Italia non è cosi ovvia. A buon rendere.