WPDB prepara - como% - marcadores de posición?


9

¿Son normales estos {xxx...}marcadores de posición %en una declaración LIKE? Si es así, ¿cuándo se convierten de nuevo a %'s?

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

Respuestas:


12

Si, son normales. Se agregaron en 4.8.3 para corregir una vulnerabilidad de inyección SQL.

Puede leer un artículo que describe las razones técnicas para que esto suceda aquí y el boleto para el cambio aquí .

Los caracteres de marcador de posición se reemplazan por los caracteres aleatorios en la última línea de $wpdb->prepare()con la $wpdb->add_placeholder_escape()función, que llama $wpdb->placeholder_escape()internamente.

Estos marcadores de posición se eliminan $wpdb->query()mediante la $wpdb->remove_placeholder_escape()función que se agrega como un filtro al querygancho.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.