Command Palette

Search for a command to run...

Glossario SQL Injection (SQLi)

Che cos’è l’iniezione SQL (SQLi)?

L’iniezione SQL (SQLi) è un tipo di attacco in cui gli aggressori inseriscono istruzioni SQL dannose nel campo di input per manipolare il database.

Questo attacco prende di mira applicazioni che non gestiscono correttamente la validazione e l’input dell’utente, permettendo l’accesso non autorizzato a dati sensibili come password o dettagli delle carte di credito, ecc.

Come funziona l’iniezione SQL

Quando un’applicazione include direttamente l’input dell’utente in una query di database senza una corretta validazione, gli aggressori possono modificare il comportamento della query per inserire un’istruzione SQL dannosa.

Per esempio:

SELECT * FROM users WHERE username = 'admin' AND password = '12345';

Un aggressore potrebbe inserire:

' OR '1'='1

Risultando in:

SELECT * FROM users WHERE username = '' OR '1'='1' AND password = '';

Questo restituisce sempre vero, concedendo accesso non autorizzato.

Perché l’iniezione SQL è importante nella cybersecurity

L’iniezione SQL è la tecnica più pericolosa e antica nella cybersecurity. Questo tipo di attacco è costantemente elencato nella OWASP Top 10.

Anche piccole vulnerabilità permettono a un aggressore di:

  • Accedere, modificare o eliminare dati
  • Bypassare l’autenticazione
  • Eseguire operazioni amministrative sul database.
  • Compromettere l’intero sistema.

Tipi Comuni di SQL Injection

  • SQLi Classico : Iniezione diretta tramite moduli web o parametri URL.
  • SQLi Cieco : Gli attaccanti deducono informazioni sul database indirettamente (ad esempio, tramite messaggi di errore o tempo di risposta).
  • SQLi Basato su UNION : Utilizza l’operatore UNION per combinare i risultati di più query.
  • SQLi Basato su Errori : Si basa sui messaggi di errore del database per estrarre informazioni.
  • SQLi Cieco Basato su Tempo : Sfrutta i ritardi di risposta del server per indovinare i risultati delle query.

Come Prevenire SQL Injection

1. Utilizzare Query Parametrizzate (Prepared Statements)

Assicurarsi che i comandi SQL trattino l’input dell’utente come dati, non come codice eseguibile.

cursor.execute("SELECT * FROM users WHERE username = ?", (username,))

2. Validazione e Sanitizzazione dell’Input

Validare tutti gli input degli utenti, permettendo solo i caratteri previsti.

3. Utilizzare Framework ORM

Framework come Prisma, Hibernate, ecc, riducono la gestione diretta di SQL.

4. Principio del Minimo Privilegio

Limitare i permessi degli utenti, concedendo solo i permessi necessari.

5. Test di Sicurezza Regolari

Usa strumenti di test di sicurezza delle applicazioni come SAST, DAST o IAST per rilevare precocemente i difetti di iniezione.

Esempio nel Mondo Reale

Un sito web di un negozio online ha subito una violazione in cui gli attaccanti hanno utilizzato un’iniezione SQL in un modulo di login per estrarre i dettagli delle carte di credito dal suo database.

Termini Correlati

Prossimi Passi

Pronto a proteggere le tue applicazioni? Scegli il tuo percorso.

Unisciti a oltre 500 aziende che già proteggono le loro applicazioni con Plexicus

SOC 2 Compliant
ISO 27001 Certified
Enterprise Ready