WPDB prépare - comme% - des espaces réservés?


9

Ces {xxx...}espaces réservés %dans une instruction LIKE sont-ils normaux? Si oui, quand sont-ils reconvertis en %?

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

Réponses:


12

Oui, ils sont normaux. Ils ont été ajoutés en 4.8.3 pour corriger une vulnérabilité d'injection SQL.

Vous pouvez lire un article décrivant les raisons techniques de cette situation ici et le ticket pour le changement ici .

Les caractères d'espace réservé sont remplacés par les caractères aléatoires sur la dernière ligne de $wpdb->prepare()la $wpdb->add_placeholder_escape()fonction, qui appelle en $wpdb->placeholder_escape()interne.

Ces espaces réservés sont supprimés $wpdb->query()par la $wpdb->remove_placeholder_escape()fonction qui est ajoutée en tant que filtre au querycrochet.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.