Torna al blog
SicurezzaSQLOWASP

SQL injection: come prevenirla

MUSTNODE SRL7 min di lettura

Un classico ancora attuale

La SQL injection e tra le vulnerabilita piu antiche e ancora oggi tra le piu diffuse. Si verifica quando l'input dell'utente viene concatenato direttamente in una query, permettendo a un attaccante di alterarne la logica e accedere o distruggere dati.

Il codice vulnerabile

Costruire una query incollando stringhe e l'errore fatale. Qui un input come ' OR '1'='1 trasforma la condizione in sempre vera, scavalcando l'autenticazione.

// VULNERABILE: mai fare cosi
const query = `SELECT * FROM utenti WHERE email = '${email}'`;
db.execute(query);

La difesa: query parametrizzate

La soluzione e separare il codice SQL dai dati con query parametrizzate (prepared statement). Il database tratta i parametri come valori, mai come istruzioni, neutralizzando l'iniezione.

// SICURO: parametri separati dalla query
const query = "SELECT * FROM utenti WHERE email = $1";
db.execute(query, [email]);

Difese in profondita

Le query parametrizzate sono la misura principale, ma non l'unica:

  • Validare gli input per tipo, lunghezza e formato.
  • Minimo privilegio sull'utente del database.
  • ORM e query builder affidabili, che parametrizzano per default.
  • Messaggi di errore generici, che non rivelino la struttura del database.

In MUSTNODE SRL trattiamo la prevenzione delle injection come un requisito non negoziabile, parametrizzando ogni query e validando ogni input fin dalla progettazione delle applicazioni.

Articoli correlati

Altri approfondimenti dalla categoria Sicurezza.