SQL injection
Structured Query Language injection
Errore correlato
“Questo server è vulnerabile a un attacco SQL injection. Accertati che l’input query SQL venga convalidato.”
Problema
Un attacco SQL injection è un tipo di vulnerabilità nel codice di siti web e di applicazioni web. Questa vulnerabilità consente al pirata di controllare processi back-end e di interferire con le query inviate da un’applicazione al suo database.
Gli attacchi SQL injection si verificano quando i dati entrano in un programma da una sorgente inaffidabile. Quindi i dati vengono usati dinamicamente per creare una query SQL.
Se gli attacchi SQL injection riescono, i pirati possono:
Accedere al front-end di un’applicazione o un sito web senza password.
Accedere a dati memorizzati in database protetti, modificarli e cancellarli.
Creare i propri record di database o modificarne di esistenti, spianando la strada ad altri attacchi.
Soluzione
Per prevenire attacchi SQL injection:
Usare istruzioni preparate (con query parametrizzate) per assicurarsi che i parametri (input) trasmessi in istruzioni SQL vengano trattati in modo sicuro.
Inserire in allowlist la convalida dati di input (non bloccare). Non filtrare l’input utente in base alle blocklist. I pirati trovano quasi sempre un modo per bypassare la tua lista. Se possibile, verifica e filtra l’input utente usando unicamente severe allowlist.
Evitare caratteri speciali da parametri di input quando query parametrizzate e convalida di dati input non sono possibili.
Applicare il principio dei “privilegi minimi”, rinforzando o controlli dell’accesso al tuo sito web per ridurre le minacce alla sicurezza:
Usa il set minimo di privilegi sui tuoi sistemi per l’esecuzione di un’azione.
Assegna privilegi unicamente per la durata necessaria dell’azione.
Non concedere diritti di accesso amministratore a account di applicazioni.
Minimizza i privilegi di ciascun account di database nel tuo ambiente.