it-swarm-id.com

Apakah check_plain () cukup?

Apakah check_plain () cukup untuk menampilkan kembali teks yang dimasukkan oleh pengguna di browser, atau haruskah saya tetap memfilter dengan filter_xss () ?

16
Citricguy

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() menyaring string HTML untuk mencegah kerentanan lintas-situs-scripting (XSS). Secara khusus tujuannya adalah:

    • 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 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 kasus seperti itu, filter_xss() tidak diperlukan. Jika Anda menggunakan filter_xss(), maka string yang diteruskan ke fungsi seharusnya HTML, dan check_plain() tidak diperlukan.

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 keseluruhan tag HTML.

26
kiamlaluno