Heim  >  Artikel  >  Datenbank  >  Wie entgeht man Benutzereingaben bei der Migration von mysql_* zu PDO?

Wie entgeht man Benutzereingaben bei der Migration von mysql_* zu PDO?

Susan Sarandon
Susan SarandonOriginal
2024-10-26 12:51:03574Durchsuche

 How to Escape User Input When Migrating from mysql_* to PDO?

PDO-Äquivalent von mysql_real_escape_string

Frage:

Was ist das Äquivalent von bei der Migration von mysql_* zu PDO? mysql_real_escape_string-Funktion?

Antwort:

Im Gegensatz zu mysql_real_escape_string führt PDO automatisches Escape durch die Verwendung vorbereiteter Anweisungen durch. Vorbereitete Anweisungen verwenden Platzhalter (z. B. ?), anstatt Benutzereingaben direkt in SQL-Abfragen einzufügen, wodurch SQL-Injection-Schwachstellen vermieden werden.

Beispiel:

<code class="php">try {
    $db = new PDO(...);
} catch (PDOException $e) {
    echo "Error connecting to mysql: " . $e->getMessage();
}

if (isset($_POST['color'])) {
    $stmt = $db->prepare("SELECT id, name, color FROM Cars WHERE color = ?");
    $stmt->execute([$_POST['color']]);

    $cars = $stmt->fetchAll(\PDO::FETCH_ASSOC);
    var_dump($cars);
}</code>

In diesem Beispiel , $_POST['color'] wird als Parameter in der vorbereiteten Anweisung übergeben und schützt die Abfrage vor Injektion.

Zusätzliche Hinweise:

  • Immer einschließen charset=utf8 im PDO-Verbindungs-DSN aus Sicherheitsgründen.
  • Aktivieren Sie den PDO-Fehlermodus für Ausnahmen (PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION), um Datenbankfehler ordnungsgemäß zu behandeln.
  • Seien Sie vorsichtig mit veralteten MySQL-Versionen (MySQL < 5.3.6), bei denen möglicherweise zusätzliche Vorsichtsmaßnahmen erforderlich sind.
  • Weitere Informationen zur PDO- und SQL-Injection-Prävention finden Sie in den folgenden Ressourcen.

Weiterführende Literatur:

  • PDO-Tutorial für MySQL-Entwickler

Das obige ist der detaillierte Inhalt vonWie entgeht man Benutzereingaben bei der Migration von mysql_* zu PDO?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn