L'SQL Injection è uno dei più comuni e pericolosi attacchi informatici. Permette agli attaccanti di manipolare query SQL per accedere, modificare o eliminare dati sensibili nei database.

Come funziona?

Quando un'applicazione web riceve input dall'utente (come un form di login), questi dati vengono spesso inseriti direttamente in una query SQL senza validazione. Un attaccante può inserire codice SQL maligno negli input, alterando la logica della query.

Esempio semplice

Immagina una query di login: SELECT * FROM users WHERE username = '$username' AND password = '$password'

Se l'utente inserisce come username ' OR '1'='1, la query diventa: SELECT * FROM users WHERE username = '' OR '1'='1' AND password = ''

Questa condizione è sempre vera, permettendo l'accesso senza credenziali valide.

Prevenzione

  • Usa prepared statements e parametrized queries
  • Valida e sanitizza tutti gli input
  • Limita i privilegi del database
  • Usa ORM (Object-Relational Mapping) come protezione aggiuntiva

Ricorda: mai fidarsi dell'input dell'utente!