Pendahuluan
Cross Site Scripting atau XSS adalah salah satu serangan paling umum di dunia web. Serangan ini terjadi ketika penyerang berhasil memasukkan skrip berbahaya ke dalam halaman web, biasanya melalui input dari pengguna. Jika input ini tidak difilter dengan benar, maka skrip bisa dijalankan langsung di browser korban. Untuk mencegah hal ini, salah satu langkah penting yang harus dilakukan oleh pengembang adalah menerapkan filter input secara tepat.
Apa Itu Serangan XSS?
XSS adalah teknik serangan yang memanfaatkan celah pada situs web untuk menjalankan skrip berbahaya di browser pengguna. Biasanya, skrip tersebut dimasukkan lewat kolom input seperti komentar, pencarian, atau formulir lainnya.
Ada tiga jenis utama XSS. Stored XSS adalah jenis di mana skrip jahat disimpan di server dan dijalankan setiap kali halaman dibuka. Reflected XSS terjadi saat skrip langsung dijalankan melalui URL atau form. Sedangkan DOM-based XSS muncul dari manipulasi langsung pada elemen halaman di sisi pengguna.
Contohnya, jika seseorang mengetik <script>alert('XSS');</script>
di kolom komentar dan komentar tersebut ditampilkan begitu saja tanpa filter, maka pesan itu akan muncul sebagai pop-up di layar pengguna lain.
Mengapa Filter Input Penting dalam Mencegah XSS?
Input dari pengguna tidak bisa dipercaya begitu saja. Penyerang bisa memasukkan kode berbahaya ke dalamnya. Filter input berfungsi untuk menyaring karakter atau pola tertentu yang bisa membahayakan sistem.
Jika tidak ada filter, skrip jahat bisa masuk dan dijalankan oleh browser. Hal ini bisa menyebabkan pencurian data, pengambilalihan akun, atau bahkan serangan ke sistem lain. Oleh karena itu, penting sekali memastikan bahwa semua input dari pengguna diperiksa dan dibersihkan sebelum digunakan.
Teknik dan Strategi Filter Input
Ada beberapa cara untuk memfilter input agar aman dari XSS. Pertama, validasi data berdasarkan tipe. Misalnya, jika kolom hanya menerima angka, pastikan tidak ada huruf atau simbol masuk.
Kedua, lakukan escaping terhadap karakter khusus seperti tanda <, >, ” dan ‘. Ini karena karakter-karakter tersebut sering digunakan dalam skrip HTML dan JavaScript.
Ketiga, gunakan pendekatan whitelist, yaitu hanya mengizinkan karakter atau format tertentu. Cara ini lebih aman dibandingkan blacklist, karena daftar larangan bisa dengan mudah dibypass oleh penyerang.
Keempat, gunakan library atau framework yang sudah menyediakan perlindungan terhadap XSS. Banyak framework modern seperti React, Laravel, atau Django sudah memiliki sistem filter bawaan yang cukup aman.
Implementasi Filter Input dalam Berbagai Bahasa Pemrograman
Filter input bisa diterapkan dalam berbagai bahasa pemrograman. Di JavaScript, kita bisa menggunakan fungsi validasi di sisi klien untuk memeriksa data sebelum dikirim ke server. Namun, ini tidak cukup, karena penyerang bisa saja melewati validasi client-side.
Di PHP, kita bisa menggunakan fungsi seperti htmlspecialchars()
untuk mencegah karakter berbahaya dijalankan. Di Python, framework seperti Flask dan Django menyediakan filter XSS otomatis jika kita menggunakan template engine-nya dengan benar.
Penting untuk melakukan validasi di kedua sisi, baik di client (browser) maupun server. Validasi di sisi server adalah yang paling penting, karena lebih sulit dimanipulasi oleh penyerang.
Studi Kasus Singkat
Bayangkan ada kolom komentar yang tidak menggunakan filter input. Seorang penyerang memasukkan skrip jahat dan berhasil membuat pengguna lain menjalankan skrip itu saat membaca komentar. Namun, ketika filter input diterapkan, karakter dalam skrip tersebut diubah sehingga tidak bisa dijalankan. Hasilnya, serangan gagal dan halaman tetap aman. Ini menunjukkan bahwa filter input yang sederhana pun bisa mencegah XSS dengan efektif.
Kesimpulan
Filter input adalah langkah dasar tapi sangat penting dalam menjaga keamanan aplikasi web dari serangan XSS. Semua data dari pengguna harus dianggap berbahaya sampai dibuktikan sebaliknya. Dengan menerapkan validasi dan filter secara konsisten, kita bisa mencegah skrip jahat masuk ke sistem. Praktik ini juga merupakan bagian penting dari kebiasaan secure coding yang harus dijaga oleh setiap tim pengembang web. Keamanan web dimulai dari hal kecil seperti memfilter input, tapi dampaknya sangat besar dalam jangka panjang.
NAMA: AISYA
NIM: 23156201029
PRODI: SISTEM KOMPUTER