FlawOpen

flawopen.com/XSS/Unggahan SVG

Apakah unggahan SVG berisiko XSS?

Halaman referensi
Jawaban singkat

SVG yang diunggah adalah dokumen, bukan sekadar piksel: format ini dapat berisi elemen aktif seperti skrip dan event handler. Eksekusinya bergantung pada konteks browser. SVG melalui <img> berada dalam konteks gambar terbatas; SVG inline, navigasi langsung, atau penyematan sebagai dokumen dapat bersifat aktif.

Perbedaan SVG dari format gambar lain

Tidak seperti PNG atau JPEG, SVG adalah XML yang dapat membawa konten aktif. Browser menonaktifkan skrip dalam konteks gambar terbatas seperti <img>, tetapi tidak saat SVG dibuka langsung, disematkan sebagai dokumen melalui <object>, <iframe>, atau <embed>, maupun dimasukkan secara inline. Gambar profil unggahan dapat menjadi stored XSS jika aplikasi menyajikannya sebagai dokumen aktif pada origin aplikasi. Perilaku bergantung pada konteks; ekstensi dan MIME bukan sanitasi.

Mengamankan unggahan

Pertanyaan umum

Apakah validasi ekstensi atau MIME cukup?

['Apakah validasi ekstensi atau MIME cukup?', 'Tidak. Ekstensi dan MIME yang dinyatakan hanyalah metadata, bukan pemeriksaan konten aktif. Verifikasi format sebenarnya, lalu gunakan allowlist sanitizer khusus SVG atau konversi ke raster bila fitur SVG tidak dibutuhkan.']

Referensi

Lihat juga Cross-Site Scripting (XSS, CWE-79): cara kerja dan cara mencegahnya di setiap bahasa — flawopen.com Risiko XSS pada Vue v-html WKWebView: HTML tak tepercaya aman? Apa beda XSS reflected, stored, dan DOM-based? Risiko keamanan addJavascriptInterface di Android Perlindungan XSS Angular: default aman dan API bypass XSS akibat MIME sniffing: Content-Type dan nosniff