WPDB - wie% - Platzhalter vorbereiten?

9

Sind diese {xxx...}Platzhalter %in einer LIKE-Anweisung normal? Wenn ja, wann werden sie wieder in %'s konvertiert ?

SHELL
wp> global $wpdb;
wp> $q = "%s";
=> string(2) "%s"
wp> $pq = $wpdb->prepare($q, '%hi%');
=> string(136) "'{6e039dc0b074a5ff6828a070d0c24708d132341f32dff55a053f1410beabaacd}hi{6e039dc0b074a5ff6828a070d0c24708d132341f32dff55a053f1410beabaacd}'"
Paul
quelle

Antworten:

12

Ja, sie sind normal. Sie wurden in 4.8.3 hinzugefügt, um eine SQL-Injection-Schwachstelle zu beheben.

Einen Artikel, der die technischen Gründe dafür beschreibt , und das Ticket für die Änderung finden Sie hier .

Die Platzhalterzeichen werden durch die zufälligen Zeichen in der letzten Zeile $wpdb->prepare()der $wpdb->add_placeholder_escape()Funktion ersetzt, die $wpdb->placeholder_escape()intern aufgerufen wird.

Diese Platzhalter werden $wpdb->query()durch die $wpdb->remove_placeholder_escape()Funktion entfernt, die dem queryHook als Filter hinzugefügt wird .

Jacob Peattie
quelle