SQL Injection: prevenzione

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.

Hai trovato utile quest'articolo?

  • Introduzione a PHP

    PHP (PHP: Hypertext Preprocessor) è un linguaggio di scripting server-side usato per lo sviluppo web...
  • Variabili PHP

    Le variabili in PHP iniziano sempre con il simbolo dollaro $.Dichiarazione$nome = "Mario"; $eta = 30...
  • Stringhe in PHP

    Le stringhe sono sequenze di caratteri racchiuse tra virgolette.Virgolette singole vs doppie$nome = ...
  • Array in PHP

    Gli array permettono di memorizzare più valori in una singola variabile.Array indicizzati$frutti = [...
  • Operatori PHP

    Gli operatori PHP permettono di eseguire operazioni su variabili e valori.Operatori aritmetici$a + $...