L'imposizione di un accesso con privilegi minimi, la sanificazione degli input degli utenti e la limitazione delle procedure del database possono aiutare a prevenire l'SQL injection e le conseguenti violazioni dei dati.
Dopo aver letto questo articolo sarai in grado di:
Argomenti correlati
Cos'è l'SQL injection?
Cos'è un'API?
Come funzionano le API?
Cos'è la sicurezza delle API?
Cos'è la sicurezza delle applicazioni Web?
Abbonati a theNET, il riepilogo mensile di Cloudflare sulle tematiche più discusse in Internet.
Copia link dell'articolo
Structured Query Language injection (SQLi) è un attacco di code injection che consente agli autori di attacchi di recuperare, manipolare o distruggere informazioni sensibili situate nei database SQL. Questi attacchi funzionano inserendo comandi specializzati nei campi di query SQL; una volta eseguiti, i comandi possono consentire agli autori di attacchi di falsificare l'identità di utenti legittimi, visualizzare o recuperare dati protetti e persino ottenere l'accesso come root ai server.
Spesso, gli autori di attacchi eseguono SQLi sfruttando le vulnerabilità nelle interfacce di programmazione delle applicazioni (API) che non riescono a distinguere correttamente tra codice legittimo e non attendibile. Senza la capacità di rilevare comandi o query alterati, queste API possono essere utilizzate per eseguire richieste dannose, come aggirare i firewall delle applicazioni Web (WAF) o misure di autenticazione.
In genere, SQLi viene eseguito utilizzando uno dei tre metodi seguenti:
Per vedere esempi reali di query SQL benigne e dannose, consulta Cos'è l'SQL injection?
Sebbene l'SQL injection sia una delle minacce API più diffuse, può essere efficacemente evitata con le giuste strategie di prevenzione. Approcci utili per prevenire l'SQL injection includono la limitazione delle procedure del database, la sanificazione degli input del database e l'applicazione dell'accesso con privilegi minimi.
L'SQL injection dipende in gran parte dalla capacità di un utente malintenzionato di manipolare gli input di dati e le funzioni del database. Limitando questi input e il tipo di procedure di database che possono essere eseguite, le organizzazioni possono ridurre al minimo il rischio di query non autorizzate o dannose. I modi per farlo includono:
Gli input degli utenti in qualsiasi database SQL devono essere regolarmente monitorati, convalidati e sanificati per eliminare il codice dannoso. La convalida dell'input garantisce che i dati siano correttamente ispezionati e formattati secondo criteri predeterminati, mentre la sanificazione dell'input modifica (o "sanifica") l'input rimuovendo i caratteri non validi o non sicuri e riformattandolo se necessario. I modi per garantire la convalida degli input includono:
L'accesso con privilegi minimi è il principio di fornire agli utenti solo l'accesso alle risorse protette richiesto dal loro ruolo. Ad esempio, ciò può significare limitare il numero di utenti a cui vengono concessi privilegi a livello di amministratore su un database o persino concedere agli utenti un accesso temporaneo a livello di amministratore che può essere successivamente revocato.
Limitare l'accesso degli utenti a un livello basato sui ruoli aiuta anche a ridurre al minimo l'impatto di una violazione, poiché gli autori di attacchi che violano un database utilizzando credenziali rubate saranno ugualmente limitati nella loro capacità di visualizzare, modificare, rubare o distruggere i dati protetti. Per lo stesso motivo, le organizzazioni dovrebbero limitare l'accesso condiviso ai database su più siti Web e applicazioni.
Cloudflare aiuta le organizzazioni a migliorare la propria resilienza contro gli attacchi SQLi con un potente portafoglio di sicurezza per applicazioni e API:
Le query parametriche separano il codice SQL dall'input dell'utente trattando i parametri come valori letterali anziché come codice eseguibile. Questa tecnica aiuta a impedire agli aggressori di iniettare istruzioni SQL dannose.
Il privilegio minimo limita gli utenti del database solo alle autorizzazioni di cui hanno assolutamente bisogno per le loro funzioni specifiche. Ciò limita i potenziali danni che gli autori di attacchi possono causare. Se gli aggressori eseguono con successo attacchi di SQL injection e ottengono credenziali di accesso legittime, il principio dei privilegi minimi aiuta a contenere i danni che possono causare con un account rubato.
L'inserimento in un elenco di elementi consentiti convalida gli input in base a un set specifico di caratteri o modelli accettati anziché limitarsi a cercare contenuti dannosi. Questo approccio consente solo input esplicitamente consentiti anziché cercare di rilevare tutti i possibili schemi di attacco, limitando così la quantità di possibili vettori di attacco.
Le stored procedure eseguono istruzioni SQL predefinite con parametri passati in modo sicuro al server del database e impediscono ai malintenzionati di eseguire codice direttamente sul database stesso.
I metodi di prevenzione delle iniezioni di secondo ordine includono l'applicazione del principio del privilegio minimo, l'utilizzo di query parametriche e l'implementazione della convalida e della sanificazione degli input.