Quando si lavora con database e dati inseriti dagli utenti, uno dei rischi più grandi è la SQL Injection.
Per evitare questo problema si utilizzano i Prepared Statements (query preparate).
La SQL Injection è un attacco in cui un utente inserisce codice SQL malevolo nei campi di input.
$sql = "SELECT * FROM utenti WHERE nome =
'$nome'"; |
Se l’utente inserisce:
' OR 1=1 -- |
👉 la query diventa sempre vera e può restituire tutti i dati 😱
I Prepared Statements separano:
🔹 la query SQL
🔹 i dati inseriti
👉 In questo modo i dati NON vengono interpretati come codice SQL.
Il processo avviene in 3 passaggi:
📝 preparare la query
🔗 associare i parametri
▶️ eseguire la query
<?php |
? → segnaposto
"s" → tipo di dato (stringa)
$nome → valore reale
| Tipo | Significato |
|---|---|
| s | stringa |
| i | intero |
| d | decimale |
| b | blob |
<?php |
<?php |
<?php |
🔐 proteggono da SQL Injection
⚡ migliorano le prestazioni (query riutilizzabili)
🧹 separano codice e dati
✅ rendono il codice più sicuro
dimenticare mysqli_stmt_execute()
usare tipi sbagliati (s, i,
ecc.)
non controllare errori
<?php |
i Prepared Statements rendono le query sicure
usano i placeholder ?
i dati vengono separati dalla query
proteggono da SQL Injection
sono il metodo consigliato 👍
I Prepared Statements sono uno degli strumenti più importanti in PHP quando si lavora con database.
👉 Se vuoi fare le cose “per bene”, questo è il metodo da usare sempre.
🎉 Con questo articolo il tuo tutorial ha fatto un bel salto di qualità!