Quando si lavora con PHP e database, uno dei rischi più pericolosi è la SQL Injection.
Capire questo problema e sapere come evitarlo è fondamentale per creare siti web sicuri.
La SQL Injection è un attacco in cui un utente inserisce codice SQL nei campi di input (form, URL, ecc.) per:
🔓 accedere a dati non autorizzati
📥 leggere informazioni sensibili
✏️ modificare dati
❌ eliminare dati dal database
<?php |
👉 Qui il valore $nome viene inserito direttamente
nella query.
Se un utente inserisce:
' OR 1=1 -- |
La query diventa:
SELECT * FROM utenti WHERE nome = '' OR
1=1 --' |
👉 Il risultato sarà tutti gli utenti del database 😱
Ci sono diversi metodi per proteggersi dalla SQL Injection.
È il metodo più sicuro.
<?php |
👉 I dati vengono separati dalla query e non possono essere interpretati come codice SQL.
<?php |
👉 Questo aiuta, ma non basta da solo.
❌ NON fare così:
$sql = "SELECT * FROM utenti WHERE nome =
'$nome'"; |
👉 È il modo più comune per creare vulnerabilità.
mysqli_stmt_bind_param($stmt, "i", $id); |
👉 Se un valore deve essere un numero, trattalo come numero.
🔐 usare sempre Prepared Statements
🧹 pulire i dati in input
⚠ non fidarsi mai dell’utente
🔍 controllare i dati ricevuti
<?php |
la SQL Injection è un attacco molto pericoloso
avviene quando i dati utente entrano nella query
❗ evitare concatenazioni dirette
✅ usare Prepared Statements
🛡️ validare e controllare i dati
Proteggere il proprio codice dalla SQL Injection è fondamentale per la sicurezza di qualsiasi applicazione web.
👉 Basta una piccola disattenzione per creare un grosso problema… ma con gli strumenti giusti si evita facilmente 👍