Skip to main content

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:

  1. Usare istruzioni preparate (con query parametrizzate) per assicurarsi che i parametri (input) trasmessi in istruzioni SQL vengano trattati in modo sicuro.

  2. 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.

  3. Evitare caratteri speciali da parametri di input quando query parametrizzate e convalida di dati input non sono possibili.

  4. 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.