Apa perbedaan yang tepat antara esc_html
dan attribute_escape
filter?
esc_html()
menggunakan esc_html filter
dan esc_attr()
menggunakan attribute_escape filter
. Keduanya mengkodekan <> & "'(kurang dari, lebih besar dari, ampersand, kutipan ganda, kutipan tunggal).
Saya tertarik untuk mengetahui apa sebenarnya yang membuat mereka berbeda dalam hal keamanan (melarikan diri).
esc_attr
lolosesc_html
tidak akan berguna, setelah semua mengapa tidak digunakan diesc_html
mana-mana? Jika itu jelas bagi Anda, itu mungkin tidak tampak seperti pertanyaan yang bagus tetapi tidak jelas bagi penanya bagaimana 2 fungsi ini berbeda mengingat keduanya sama-sama lolos dari karakter yang diharapkanJawaban:
Akan muncul bahwa di luar kotak, tidak ada perbedaan
Satu-satunya perbedaan antara 2 fungsi adalah filter yang diterapkan di bagian akhir. WordPress tidak menambahkan apa-apa ke filter ini, jadi dalam instalasi WP standar tidak berfungsi. Mereka disediakan di tepi kasus bahwa seseorang mungkin membutuhkannya.
T&J cepat
Jadi secara default mereka identik?
Iya! Fungsi
esc_attr
danesc_html
memiliki implementasi yang samaApakah filternya identik?
Satu-satunya perbedaan adalah mereka memiliki nama yang berbeda, mereka bekerja dengan cara yang sama, mereka menggunakan cara yang sama, dan tidak ada filter yang digunakan dalam inti.
Apakah filter melakukan sesuatu?
Tidak! Semua pelarian dilakukan dalam fungsi kapan
wp_check_invalid_utf8
dan_wp_specialchars
dipanggil.Filter tidak melakukan pelarian, itu adalah peluang bagi plugin untuk melakukan pemeriksaan dan pemrosesan tambahan.
Apakah ada kasing tepi?
Hanya jika Anda menggunakan filter, katakan Anda terhubung
esc_html
tetapi tidakattribute_escape
, atau sebaliknya. Untuk instalasi WP standar, 2 fungsi identik, tanpa perbedaan.Kenapa
attribute_escape
dan tidakesc_attr
?Kompatibilitas mundur. Dulu ada
attribute_escape
fungsi, yang sekarang ditandai sebagai usang setelahesc_
fungsi gaya ditambahkan.Mengapa saya menggunakan filter ini?
¯\_(ツ)_/¯
ini akan menjadi situasi yang langka. Beberapa orang mungkin menyalahgunakannya dengan cara yang sama dengan API terjemahan disalahgunakan untuk mencari teks pengganti. Ini sudah praktik yang buruk karena filter-filter itu disebut banyak, kehilangan kecepatan kecil diperbesar ribuan kaliTetapi pertimbangkan bahwa jika Anda tidak berhati-hati, Anda dapat membahayakan keamanan fungsi-fungsi ini dengan membatalkan pelolosan yang mereka tambahkan, atau menambahkan konten yang tidak terhindar di akhir. Karena itu filternya berbahaya.
Apakah Saya Perlu Khawatir tentang Ini?
Tidak. Anda hanya perlu khawatir jika Anda menggunakan filter-filter itu, yang dengan sendirinya akan memicu alarm merah besar bahwa ada sesuatu yang salah dalam pengembangan Anda.
Fungsi
esc_attr
danesc_html
aman digunakan, dan melarikan diri konten. Anda memiliki kewajiban etis dan moral untuk menggunakannya jika Anda menghargai keamanan kode AndaApakah ini berarti saya hanya harus menggunakan
esc_html
?Tidak, melarikan diri adalah tentang menetapkan harapan. Jika Anda mengharapkan atribut, gunakan
esc_attr
. Hanya karena secara fungsional sama saat ini, tidak berarti itu tidak akan berubah di masa depan dengan rilis keamanansumber
esc_html
menyaring melarikan diri danattribute_escape
menyaring tidak atau sebaliknya.