sql >> Database >  >> RDS >> Mysql

Preventie tegen MySQL-injectie

Gebruik voorbereide verklaringen

Wat ze doen, is eerst een versie van de query met tijdelijke aanduidingen voor gegevens verzenden. De query wordt geverifieerd en voorbereid. Als dit gelukt is, kunt u de waarden verzenden die de database veilig in de voorbereide query zal invoegen.

Er zijn drie opties:

De MySQLi-extensie

$stmt = $mysli->prepare('INSERT INTO costumer (costumer_ID,  first_name, last_name, birth_date, adress,  city, state, postal_code, country, phone, email_client,username, password, Credit_Card, Credit_CardType) 
                         VALUES 
                         (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?');

$stmt->bindParam('issssssssssssss', $_POST['costumer_ID'], ..., $_POST['Credit_CardType']);
$stmt->execute();

De PDO-extensie

// use native prepared statements if supported
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

$stmt = $pdo->prepare('INSERT INTO costumer (costumer_ID,  first_name, last_name, birth_date, adress,  city, state, postal_code, country, phone, email_client,username, password, Credit_Card, Credit_CardType) 
                       VALUES 
                       (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?');

$stmt->bindParam(1, $_POST['costumer_ID'], PDO::PARAM_INT);
...
$stmt->bindParam(15, $_POST['Credit_CardType']);

$stmt->execute();

Onbewerkte zoekopdrachten via elke extensie

Ik ga geen voorbeeld geven omdat de andere twee methoden veel beter zijn.



  1. Door mysql_real_escape_string() toe te voegen, worden lege waarden in de database opgeslagen

  2. Mysql Equivalent van php metaphone en soundex

  3. Circulair samenvoegen voorkomen, recursief zoeken

  4. Hoe de toegestane bijlagegrootte te vergroten bij het verzenden van e-mail in SQL Server (T-SQL)