PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Verhindert die vorbereitete pg_prepare()-Anweisung (nicht PDO) die SQL-Injection?

Eine vorbereitete Anweisung ist sicher vor SQL-Injection, da niemand den Abfrageplan nach ändern kann es ist vorbereitet. Aber wenn Ihre Anweisung bereits kompromittiert ist, leiden Sie immer noch unter SQL-Injection:

<?php 
// how NOT to construct your SQL....
$query = 'SELECT * FROM user WHERE login=$1 and password=md5($2) LIMIT '. $_POST['limit']; -- injection!
$result = pg_prepare($dbconn, "", $query);
$result = pg_execute($dbconn, "", array($_POST["user"], $_POST["password"]));
if (pg_num_rows($result) < 1) {
  die ("failure");
}
?>