Pertama, baca tentang ini di API Drupal:
Jadi check_plain()
mengkodekan karakter khusus yang memiliki arti khusus dalam HTML (seperti <
dan &
) ke dalam entitas teks biasa (yaitu <
dan &
masing - masing) yang akan membuat ini diterjemahkan secara harfiah (tidak diartikan sebagai HTML) ketika string yang kemudian ditampilkan sebagai bagian dari halaman dengan Markup HTML. Fungsi ini filter_xss()
memfilter string HTML untuk mencegah kerentanan lintas-situs-scripting (XSS). Itu melakukan empat hal:
- Menghapus karakter dan konstruk yang dapat menipu browser
- Memastikan semua entitas HTML terbentuk dengan baik
- Memastikan semua tag HTML dan atribut terbentuk dengan baik
- Memastikan tidak ada tag HTML berisi URL dengan protokol yang tidak diizinkan (mis. Javascript :)
Kedua fungsi digunakan untuk membersihkan data dari pengguna untuk memastikan bahwa setiap injeksi pengguna dinetralkan sebelum data diberikan di situs Anda.
Anda tidak pernah melewati string yang sama melalui keduanya .
Jika Anda menggunakan check_plain()
maka string yang diteruskan ke fungsi seharusnya digunakan sebagai teks biasa (bukan HTML). Maka filter_xss()
tidak diperlukan, karena check_plain()
akan selalu membuat teks string sederhana.
Jika Anda menggunakan filter_xss()
, maka string yang diteruskan ke fungsi seharusnya HTML, dan check_plain()
akan mengacaukannya.
Ketika saya melihat templat yang Anda gunakan sebagai contoh, tampak bagi saya seolah ketiga bidang yang diteruskan print()
berasal dari konten yang sudah disanitasi, dan tidak perlu sanitasi lagi.
Namun, jika Anda membuat modul Anda sendiri yang mengumpulkan input pengguna tanpa melewati itu melalui filter teks "aman" seperti "Filtered HTML" atau "Plain", Anda harus menggunakan fungsi-fungsi ini untuk keperluan sanitasi.
filter_xss()
ketika Anda ingin memfilter XSS dari konten yang berpotensi berbahaya (yaitu konten dari pengguna yang tidak dipercaya), dancheck_plain()
ketika Anda ingin melarikan diri karakter khusus HTML dari string