Apakah check_plain () cukup?


Jawaban:


26

Saya membayangkan pertanyaannya adalah tentang menggunakan check_plain(filter_xss($string)), atau filter_xss(check_plain($string)).

check_plain()dan filter_xss()memiliki dua tujuan yang berbeda, dan sebaliknya:

  • check_plain() menyandikan karakter khusus dalam string teks biasa yang kemudian ditampilkan sebagai HTML.
  • filter_xss()memfilter string HTML untuk mencegah kerentanan lintas-situs-scripting (XSS). Secara khusus tujuannya adalah:

    • Menghapus karakter dan konstruk yang dapat memperdayai peramban
    • Memastikan semua entitas HTML terbentuk dengan baik
    • Memastikan semua tag HTML dan atribut terbentuk dengan baik
    • Memastikan tidak ada tag HTML yang berisi URL dengan protokol yang tidak diizinkan (mis. Javascript :)

Jika Anda menggunakan check_plain(), string yang diteruskan ke fungsi seharusnya digunakan sebagai teks biasa; dalam hal demikian, filter_xss()tidak perlu. Jika Anda menggunakan filter_xss(), maka string yang diteruskan ke fungsi seharusnya HTML, dan check_plain()tidak perlu.

Jika pertanyaannya adalah tentang menggunakan check_plain()dan filter_xss()pada bagian berbeda dari string yang sama, maka, seperti yang ditunjukkan greggles dalam komentarnya, Anda dapat menggunakan (misalnya) check_plain()pada konten atribut tag, dan filter_xss()pada seluruh tag HTML.


5
filter_xss dimaksudkan untuk digunakan pada seluruh bagian html. Jika Anda menggunakan filter_xss pada atribut html itu tidak akan menyaringnya dengan benar. check_plain dapat digunakan untuk memfilter atribut html dengan aman. Lihat juga drupalscout.com/knowledge-base/… dan drupalscout.com/knowledge-base/… untuk info lebih lanjut tentang penggunaan fungsi-fungsi ini.
Greggles
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.