Apakah mungkin melakukan serangan XSS jika input saya tidak mengizinkan karakter ‹ dan >?
Example: I enter <script>alert('this');</script> text
Tapi kalau saya hapus ‹ dan > skripnya bukan teks:
I enter script alert('this'); script text
Apakah mungkin melakukan serangan XSS jika input saya tidak mengizinkan karakter ‹ dan >?
Example: I enter <script>alert('this');</script> text
Tapi kalau saya hapus ‹ dan > skripnya bukan teks:
I enter script alert('this'); script text
Ya, itu masih mungkin terjadi.
misalnya Katakanlah situs Anda memasukkan masukan pengguna ke lokasi berikut
<img src="http://example.com/img.jpg" alt="USER-INPUT" />
Jika USER-INPUT
adalah " ONLOAD="alert('xss')
, ini akan dirender
<img src="http://example.com/img.jpg" alt="" ONLOAD="alert('xss')" />
Tidak diperlukan tanda kurung sudut.
Lihat juga Aturan Encoding Minimal Eksperimental OWASP XSS.
Untuk isi HTML:
Pengkodean Entitas HTML ‹ &
tentukan charset di metatag untuk menghindari UTF7 XSS
Untuk badan XHTML:
Pengkodean Entitas HTML ‹ & ›
batasi masukan ke rangkaian karakter http://www.w3.org/TR/2008/REC-xml-20081126/#charsets
Jadi di dalam tubuh Anda dapat lolos hanya dengan menyandikan (atau menghapus) subset karakter yang biasanya disarankan untuk mencegah XSS. Namun, Anda tidak dapat melakukan ini dalam atribut - XSS (Cross Site Scripting) secara lengkap ) Lembar Cheat Pencegahan merekomendasikan hal berikut, dan mereka tidak memiliki alternatif minimal:
Kecuali karakter alfanumerik, pisahkan semua karakter dengan format Entitas HTML
&#xHH;
, termasuk spasi. (HH = Nilai Hex)
Tujuan utamanya adalah untuk mencakup tiga jenis cara menentukan nilai atribut:
Pengkodean sedemikian rupa akan mencegah XSS dalam nilai atribut dalam ketiga kasus.
Berhati-hatilah juga karena serangan UTF-7 tidak memerlukan karakter braket sudut. Namun, kecuali rangkaian karakter secara eksplisit disetel ke UTF-7, jenis serangan ini tidak mungkin dilakukan di browser modern .
+ADw-script+AD4-alert(document.location)+ADw-/script+AD4-
Berhati-hatilah juga terhadap atribut yang mengizinkan URL seperti href
dan pastikan setiap masukan pengguna adalah URL web yang valid. Menggunakan perpustakaan yang memiliki reputasi baik untuk memvalidasi URL sangat disarankan menggunakan pendekatan daftar yang diizinkan (misalnya jika protokol bukan HTTPS maka tolak). Mencoba memblokir urutan seperti javascript:
tidaklah cukup.
Jika masukan yang diberikan pengguna dicetak di dalam atribut HTML, Anda juga harus menghindari tanda kutip atau masukan Anda akan rentan seperti ini:
" onload="javascript-code" foobar="
Anda juga harus menghindari karakter ampersand karena biasanya karakter tersebut perlu dikodekan di dalam dokumen HTML dan dapat merusak tata letak Anda.
Jadi, Anda harus memperhatikan karakter berikut: ‹ > & ' "
Namun Anda tidak boleh menghapusnya sepenuhnya tetapi menggantinya dengan kode HTML yang benar yaitu '