O WPDB prepara - como% - espaços reservados?


9

Esses {xxx...}espaços reservados %em uma instrução LIKE são normais? Se sim, quando eles serão convertidos novamente em %'s?

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

Respostas:


12

Sim, são normais. Eles foram adicionados no 4.8.3 para corrigir uma vulnerabilidade de injeção SQL.

Você pode ler um artigo descrevendo os motivos técnicos para isso acontecer aqui e o ticket para a alteração aqui .

Os caracteres de espaço reservado são substituídos pelos caracteres aleatórios na última linha de $wpdb->prepare()com a $wpdb->add_placeholder_escape()função, que chama $wpdb->placeholder_escape()internamente.

Esses espaços reservados são removidos $wpdb->query()pela $wpdb->remove_placeholder_escape()função que é adicionada como um filtro ao querygancho.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.