La SQL Injection è una delle vulnerabilità più pericolose. Ecco come prevenirla.
Codice vulnerabile (MAI fare)
// PERICOLOSO!
$query = "SELECT * FROM users WHERE id = " . $_GET["id"];
$query = "SELECT * FROM users WHERE email = '" . $_POST["email"] . "'";Soluzione: Prepared Statements
// PDO - Modo sicuro
$stmt = $pdo->prepare("SELECT * FROM users WHERE id = ?");
$stmt->execute([$_GET["id"]]);
// Con named parameters
$stmt = $pdo->prepare("SELECT * FROM users WHERE email = :email");
$stmt->execute([":email" => $_POST["email"]]);MySQLi Prepared
$stmt = $mysqli->prepare("SELECT * FROM users WHERE id = ?");
$stmt->bind_param("i", $_GET["id"]);
$stmt->execute();Regola d oro
MAI concatenare input utente direttamente nelle query SQL.