SQL injection
La SQL injection si verifica quando dati esterni cambiano la struttura di una query. Il binding dei parametri riguarda valori, non diritti di accesso.
La SQL injection consiste nell’introdurre frammenti di istruzioni SQL attraverso i dati elaborati da un’applicazione. Se questi valori vengono inseriti nel testo di una query, possono cambiarne il significato. Quali dati possano essere letti o modificati dipende, fra l’altro, dai permessi dell’account di database usato.
Separare filtro di progetto e struttura della query
Un portale di ticket fittizio cerca le voci associate a un riferimento di progetto. Tratta il valore del campo projectRef come un parametro associato alla query: la struttura è fissa e il valore viene passato separatamente attraverso l’interfaccia del database. Deve restare un valore di ricerca senza diventare parte della sintassi SQL.
Limitarsi a preparare una query dopo averla composta con gli input non crea questa separazione. Nemmeno dati già salvati o valori provenienti da altri sistemi devono diventare testo SQL non controllato nella costruzione di una query successiva.
Associare i valori e fissare le scelte strutturali
Un campo di ordinamento come sortKey è un caso diverso. I segnaposto per i valori non sostituiscono nomi arbitrari di colonne o direzioni di ordinamento. L’applicazione associa quindi le selezioni note a colonne e direzioni fisse definite nel codice. OWASP descrive esplicitamente questa distinzione tra binding dei parametri e scelte strutturali consentite.
Il binding dei parametri non verifica inoltre se la persona autenticata possa accedere al progetto richiesto. Questo controllo resta responsabilità dell’applicazione. Un account di database limitato ai permessi necessari può contenere i danni possibili; non elimina la costruzione non sicura delle query.
Fonti
Termini correlati
- DatabaseUna raccolta organizzata di dati a cui il software può accedere e applicare modifiche.
- SQLUn linguaggio per definire, interrogare e modificare dati; non un singolo prodotto database.
- Mappatura oggetto-relazionaleCollegare oggetti del programma ai dati di un database relazionale.
- Minimizzazione dei datiLa minimizzazione limita i dati personali a quanto è adeguato, pertinente e necessario per una finalità definita.
- Politica di conservazione dei datiUna politica di conservazione definisce scopo, inizio, durata e fine della memorizzazione. Cancellazioni e copie richiedono una gestione tecnica.
- Crittografia envelopeLa crittografia envelope separa la chiave dei dati da quella che la protegge. File cifrato e chiave dei dati avvolta vanno gestiti insieme.
Il vostro progetto con ASES
Descriveteci il vostro progetto. Vi ricontatteremo con una prima valutazione.