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

Was macht pg_escape_string genau?

Betrachten Sie den folgenden Code:

$sql = "INSERT INTO airports (name) VALUES ('$name')";

Nehmen wir nun an, dass $name ist "Chicago O'Hare" . Wenn Sie die String-Interpolation durchführen, erhalten Sie diesen SQL-Code:

INSERT INTO airports (name) VALUES ('Chicago O'Hare')

was falsch geformt ist, weil der Apostroph wird als SQL-Anführungszeichen interpretiert , und Ihre Abfrage wird fehlerhaft.

Es können auch schlimmere Dinge passieren. Tatsächlich wurde die SQL-Injection von MITRE auf Platz 1 der gefährlichsten Softwarefehler des Jahres 2011 eingestuft.

Aber Sie sollten sowieso niemals SQL-Abfragen mit String-Interpolation erstellen. Verwenden Sie stattdessen Abfragen mit Parametern.

$sql = 'INSERT INTO airports (name) VALUES ($1)';
$result = pg_query_params($db, $sql, array("Chicago O'Hare"));