Hal ini membuat coding saya sulit. Codex Wordpress beralasan menggunakan esc_url dengan berbicara sedikit tentang keamanan. Tetapi apakah itu benar-benar sepadan dengan masalahnya?
Misalnya, apa manfaat keamanan praktis yang penting dengan menggunakan
<?php echo esc_url( home_url( '/' ) ); ?>
dari pada
<?php echo home_url() ?>
PS: Saya tidak berbicara tentang pengembangan tema, tetapi tentang situs tertentu.
home_url()
, jika digunakan dalam konteks yang tepat. Menurut rekomendasi ini, saya diharapkanhome_url
untuk melakukan sanitasi sendiri.well, semua input pengguna harus disanitasi ... Jika url yang Anda masukkan bukan input pengguna (mis. pengaturan situs oleh seseorang yang Anda percayai sepenuhnya, nilai-nilai yang di-hardcode) maka Anda dapat membebaskan diri dari esc-url.
tetapi jika saya bisa menyuntikkan url itu ke situs Anda, saya bisa dengan mudah menyuntikkan kode js, atau kode redirection ... atau bahkan kode sisi server dalam beberapa situasi.
ini dapat menyebabkan pembajakan sesi dan akun pengguna Anda dicuri dan opsi buruk lainnya.
Edit:
Dalam contoh Anda
esc_url( home_url( '/' ) );
ini beroperasi pada nilai semi-hardcode! karena itu
esc_url
bisa dihilangkan.Yang mengatakan saya masih tidak melihat mengapa mengganggu perbedaan antara ketika ada ancaman dan ketika tidak ada dan umumnya menyarankan untuk menjaga esc_url () untuk setiap nilai.
sumber
Hal lain yang harus diingat
esc_url()
adalah untuk sesuatu seperti.<a href="SANITIZE_THIS_URL">your_text</a>
Jika Anda akan menggunakan URL dalam output HTML Anda, seperti atribut href untuk tautan, atau atribut src untuk elemen gambar, Anda harus menggunakanesc_url()
.esc_url_raw()
untuk kasus lain di mana Anda ingin URL bersih, tetapi Anda tidak ingin entitas HTML dikodekan. Jadi setiap penggunaan non-HTML (DB, redirect) akan menggunakan ini.The
esc_url_raw()
fungsi akan melakukan cukup banyak yang sama sepertiesc_url()
, tetapi tidak akan entitas decode, yang berarti tidak akan menggantikan & dengan & # 038 dan seterusnya. Seperti yang ditunjukkan oleh Mark, aman untuk digunakanesc_url_raw()
dalam permintaan basis data, pengalihan dan fungsi HTTP, seperti `wp_remote_get () 'untuk info lebih lanjut tentang esc_url_raw ()sumber
esc_url digunakan untuk menghasilkan HTML yang valid (bukan untuk membersihkan input). Anda harus menggunakan ini kapan saja Anda tidak 100% yakin bahwa apa yang ingin Anda hasilkan adalah HTML yang valid untuk konteks itu.
sumber