La grande maggioranza delle applicazioni deve interfacciarsi in un modo o nell’altro con una base di dati. A seconda della portata del progetto, si può avere a che fare con dati molto semplici o con un database ampio e articolato.
Per questo, lasciare ad ogni sviluppatore “la licenza creativa” di gestire l’estrapolazione dei dati può essere rischioso e prono ad errori.
Un ORM (Object Relational Mapping) è uno strato di astrazione che permette allo sviluppatore di interagire con il database senza doversi preoccupare del suo sistema sottostante e del suo dialetto.
Nella pratica, gli ORM sono delle librerie – disponibili in praticamente tutti i linguaggi di programmazione – che trasformano le tabelle del database in oggetti e le operazioni come select, insert, update, delete in metodi di questi oggetti.
Un esempio comune:
supponiamo di avere un database con una tabella di prodotti per un e-commerce.
Senza ORM lo sviluppatore, per ottenere un elenco dei prodotti, dovrebbe scrivere la query nella sua interezza (SELECT * FROM products…); un ORM trasformerebbe invece la tabella in un oggetto, rendendo possibile interrogare il database chiamando il metodo get di una classe Product.
Le interazioni via codice con un DB sono notoriamente un aspetto sensibile dello sviluppo, che se gestito con troppa leggerezza rischia di aprire le porte a vulnerabilità anche gravi.
Sei dati presi in input da un’applicazione vengono utilizzati nelle query senza un’adeguata validazione per l’utente diventa possibile agire in modo arbitrario e incontrollato sul database “iniettando” direttive SQL per esempio per mezzo di un form o una barra di ricerca.
Utilizzare un ORM significa, almeno in parte, delegare questa validazione alla libreria, limitando la responsabilità del singolo sviluppatore e accelerando notevolmente le tempistiche di sviluppo.
Nel corso di per diventare Cyber Security Specialist offerto da ITS vengono proposte come oggetto di studio le varie forme di SQL injection e i vettori di attacco più comuni nelle applicazioni web, nonché come prevenire questo tipo di vulnerabilità attraverso l’adozione di best practices di sviluppo. Scopri il corso!