WPDB menyiapkan - seperti% - penampung?


9

Apakah {xxx...}placeholder ini %dalam pernyataan LIKE adalah normal? Jika demikian, kapan mereka dikonversi kembali ke %?

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

Jawaban:


12

Ya, itu normal. Mereka ditambahkan dalam 4.8.3 untuk memperbaiki kerentanan injeksi SQL.

Anda dapat membaca artikel yang menjelaskan alasan teknis untuk hal ini terjadi di sini dan tiket untuk perubahan di sini .

Karakter placeholder digantikan oleh karakter acak pada baris terakhir $wpdb->prepare()dengan $wpdb->add_placeholder_escape()fungsi, yang memanggil secara $wpdb->placeholder_escape()internal.

Tempat penampung ini dihapus $wpdb->query()oleh $wpdb->remove_placeholder_escape()fungsi yang ditambahkan sebagai filter ke querypengait.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.