Haruskah output HTML diteruskan melalui esc_html () AND wp_kses ()?


11

Saya bingung tentang perbedaan penggunaan esc_html()dan wp_kses(). Saya mengerti bahwa esc_html()mengubah karakter khusus ke entitas HTML mereka, dan yang wp_kses()menghapus tag yang tidak diinginkan (misalnya, <script>), tetapi saya tidak yakin dalam konteks apa mereka harus digunakan bersama-sama atau secara terpisah.

Jika saya menjalankan beberapa HTML yang tidak tepercaya esc_html(), maka setiap JavaScript akan ditampilkan dalam teks biasa daripada di-render oleh browser, jadi aman pada saat itu, benar? Satu-satunya alasan untuk menjalankannya wp_kses()adalah untuk menghindari skrip mentah ditampilkan?

Pada dasarnya, esc_html()membuatnya aman, dan wp_kses()membuatnya cantik. Apakah itu benar?

Jawaban:


16

Aturan umum, setidaknya seperti yang didukung oleh Mark Jaquith , adalah sanitasi pada input, melarikan diri pada output (akibat wajar dari aturan ini adalah sanitasi awal, melarikan diri terlambat ).

Jadi: gunakan filter sanitasi (seperti kses()famili) saat menyimpan data yang tidak dipercaya dalam database , dan gunakan filter yang lolos (mis. esc_*()Keluarga) saat mengeluarkan data yang tidak dipercaya dalam template .


14

Fungsi kses harus digunakan ketika Anda ingin mengizinkan beberapa html menjadi hasilnya. Misalnya, komentar mengizinkan beberapa HTML di dalamnya untuk dicetak tebal, miring, tautan, dan semacamnya.

Fungsi esc_html harus digunakan untuk keluar sepenuhnya dari html. Tidak ada HTML yang akan melewatinya tanpa dikonversi ke sesuatu yang akan ditafsirkan sebagai non-HTML oleh browser.

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.