WPDB prepara, come%, i segnaposto?


9

Questi {xxx...}segnaposto sono %in un'istruzione LIKE normale? In tal caso, quando vengono convertiti in %"s"?

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

Risposte:


12

Sì, sono normali. Sono stati aggiunti in 4.8.3 per correggere una vulnerabilità di iniezione SQL.

Puoi leggere un articolo che descrive i motivi tecnici di ciò che accade qui e il biglietto per il cambiamento qui .

I caratteri segnaposto vengono sostituiti dai caratteri casuali sull'ultima riga di $wpdb->prepare()con la $wpdb->add_placeholder_escape()funzione, che chiama $wpdb->placeholder_escape()internamente.

Questi segnaposto vengono rimossi $wpdb->query()dalla $wpdb->remove_placeholder_escape()funzione che viene aggiunta come filtro al querygancio.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.