Akan muncul bahwa di luar kotak, tidak ada perbedaan
function esc_html( $text ) {
$safe_text = wp_check_invalid_utf8( $text );
$safe_text = _wp_specialchars( $safe_text, ENT_QUOTES );
/**
* Filters a string cleaned and escaped for output in HTML.
*
* Text passed to esc_html() is stripped of invalid or special characters
* before output.
*
* @since 2.8.0
*
* @param string $safe_text The text after it has been escaped.
* @param string $text The text prior to being escaped.
*/
return apply_filters( 'esc_html', $safe_text, $text );
}
function esc_attr( $text ) {
$safe_text = wp_check_invalid_utf8( $text );
$safe_text = _wp_specialchars( $safe_text, ENT_QUOTES );
/**
* Filters a string cleaned and escaped for output in an HTML attribute.
*
* Text passed to esc_attr() is stripped of invalid or special characters
* before output.
*
* @since 2.0.6
*
* @param string $safe_text The text after it has been escaped.
* @param string $text The text prior to being escaped.
*/
return apply_filters( 'attribute_escape', $safe_text, $text );
}
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
dan esc_html
memiliki implementasi yang sama
Apakah 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 tidak attribute_escape
, atau sebaliknya. Untuk instalasi WP standar, 2 fungsi identik, tanpa perbedaan.
Kenapa attribute_escape
dan tidak esc_attr
?
Kompatibilitas mundur. Dulu ada attribute_escape
fungsi, yang sekarang ditandai sebagai usang setelah esc_
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 kali
Tetapi 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
dan esc_html
aman digunakan, dan melarikan diri konten. Anda memiliki kewajiban etis dan moral untuk menggunakannya jika Anda menghargai keamanan kode Anda
Apakah 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 keamanan