XSS
Cross Site Scripting atau XSS adalah serangan keamanan web yang terjadi ketika penyerang menyisipkan kode berbahaya dalam bentuk skrip ke dalam website. Kode berbahaya tersebut berpotensi merugikan pengunjung yang melihat halaman web.
software-engineer
Apa itu XSS (Cross Site Scripting)?
Cross Site Scripting atau XSS adalah serangan keamanan web yang terjadi ketika penyerang menyisipkan kode berbahaya dalam bentuk skrip ke dalam website. Kode berbahaya tersebut berpotensi merugikan pengunjung yang melihat halaman web.
Dengan kata lain, penyerang menggunakan website sebagai jembatan untuk memasukkan kode jahat ke komputer user.
XSS merupakan serangan yang ditujukan untuk pengguna/pengunjung, bukan langsung pada aplikasi web itu sendiri. Pelaku biasanya mencari cara untuk 'menghias' website dengan skrip jahat yang kemudian dapat berinteraksi dengan browser pengunjung tanpa menaruh curiga. Ketika skrip dieksekusi, informasi sensitif seperti kata sandi, data kartu kredit, atau detail lain yang seharusnya dirahasiakan, bisa diakses oleh penyerang.
Tujuan XSS
Tujuan utama dari serangan XSS adalah untuk mencuri data sensitif pengguna, seperti informasi login, detail kartu kredit, atau data pribadi lainnya. Dengan mendapatkan akses ke informasi-informasi tersebut, penyerang dapat melakukan berbagai aksi jahat, mulai dari mengambil alih akun pengguna, melakukan transaksi finansial, sampai mencuri identitas.
Berikut tujuan lebih lanjut dari serangan XSS:
- Memanipulasi konten website: XSS bisa memanipulasi konten suatu website tanpa sepengetahuan dari pemilik situs tersebut. Serangan ini memungkinkan peretas untuk menyuntikkan skrip jahat ke dalam halaman web yang kemudian dijalankan oleh browser user.
- Melakukan defacement: defacement adalah tindakan mengubah tampilan halaman web tanpa izin. Dengan XSS, peretas bisa merusak tampilan website, seperti mengubah teks, gambar, atau bahkan struktur halaman.
- Distribusi malware: XSS juga bisa dipakai untuk mendistribusikan malware kepada pengguna website yang terinfeksi. Skrip jahat yang dimasukkan ke dalam situs dapat digunakan untuk mengunduh dan menjalankan software berbahaya di komputer user.
- Melakukan serangan phising: serangan XSS bisa juga dimanfaatkan untuk melakukan phising, yaitu serangan yang bertujuan untuk mendapatkan data sensitif user melalui penipuan. Cara ini bisa dilakukan misalnya dengan skrip jahat digunakan untuk membuat halaman login palsu yang mirip dengan situs asli.
Mengapa Serangan XSS Bisa Terjadi?
Serangan XSS merupakan salah satu jenis serangan yang paling sering terjadi dalam pengembangan web. Berikut beberapa alasan mengapa serangan XSS bisa terjadi:
Penggunaan data input pengunjung tanpa sanitasi atau validasi
XSS dapat terjadi karena kurangnya sanitasi atau validasi pada data input user. Setiap kali pengunjung web diberikan kebebasan untuk memasukkan data dalam formulir, ada kemungkinan script jahat dimasukkan. Jika data ini tidak disanitasi atau divalidasi dengan benar, script tersebut bisa dieksekusi dan menyebabkan serangan XSS.
Tidak adanya pembatasan pada jenis konten
Faktor lain yang dapat menyebabkan serangan XSS adalah tidak adanya pembatasan pada jenis konten yang dapat dimasukkan oleh pengunjung website. Misalnya, sebuah situs web membolehkan audiens memasukkan HTML atau JavaScript dalam input mereka, ini dapat dimanfaatkan oleh penyerang untuk memasukkan script XSS.
Lemahnya keamanan dari sisi klien
Serangan XSS umumnya terjadi pada sisi klien. Artinya, penyerang memanfaatkan kerentanan dalam browser pengguna. Apabila browser tersebut tidak memiliki mekanisme keamanan yang cukup kuat untuk mencegah eksekusi script jahat, serangan XSS dapat terjadi.
Kurangnya kesadaran keamanan dari developer
Faktor lain yang berkontribusi terhadap serangan XSS adalah kurangnya pengetahuan atau kesadaran tentang keamanan dari developer. Jika developer tidak memahami ancaman XSS atau tidak tahu cara mencegahnya, aplikasi mereka mungkin menjadi rentan terhadap serangan jenis ini.
Jenis-jenis dan Contoh Serangan XSS
Dirangkum dari Tech Target, berikut jenis-jenis serangan XSS sekaligus contohnya:
#1 Stored XSS
Stored XSS, juga dikenal sebagai persistent XSS, terjadi ketika skrip jahat disisipkan secara langsung ke dalam database website. Skrip ini akan dieksekusi ketika pengunjung lain melihat konten yang berasal dari database tersebut.
Sebagai contoh, ada sebuah situs jual beli online yang memungkinkan audiens untuk meninggalkan komentar tentang produk setelah mereka membelinya. Penyerang bisa saja menulis komentar yang berisi skrip berbahaya, seperti <script>stealCookies()</script>.
Jika situs tersebut tidak melakukan sanitasi input dengan baik, skrip akan disimpan di database dan dieksekusi setiap kali audiens lain membuka halaman produk tersebut. Dalam hal ini, fungsi stealCookies() merupakan fungsi yang mencuri cookies pengunjung dan mengirimkannya ke penyerang.
#2 Reflected XSS
Reflected XSS terjadi ketika skrip berbahaya disisipkan melalui URL dan dieksekusi ketika pengguna mengeklik URL tersebut.
Misalnya, penyerang mengirimkan e-mail yang berisi tautan ke website ternama, tetapi link tersebut dimodifikasi sedemikian rupa sehingga berisi skrip berbahaya. Link tersebut mungkin tampak seperti https://google.com/login?errorMsg=<script>stealCookies()</script>
Ketika penerima e-mail mengeklik tautan, website akan mencoba menampilkan pesan error berisi skrip berbahaya yang kemudian dieksekusi dan mencuri cookies pengunjung.
#3 DOM-based XSS
DOM-based XSS terjadi ketika skrip berbahaya mampu memanipulasi document object model (DOM) dari suatu halaman web, lalu mengubah struktur halaman tersebut.
Contohnya, suatu website memiliki fitur pencarian. Hasil pencarian ditampilkan dengan format sebagai berikut:
Hasil pencarian untuk: <kata kunci>
Penyerang bisa memanfaatkan ini dengan memasukkan skrip berbahaya sebagai kata kunci, seperti </title><script>stealCookies()</script>.
Jika website tersebut menampilkan kata kunci pencarian langsung ke DOM tanpa sanitasi, skrip akan dieksekusi dan mencuri cookies pengunjung.
Dalam ketiga contoh di atas, stealCookies() adalah representasi dari skrip berbahaya yang bisa mencuri cookies pengunjung. Cookies bisa berisi informasi sensitif seperti session ID yang digunakan untuk melakukan session hijacking (pembajakan).
FAQ (Frequently Asked Question)
Bagaimana cara mencegah XSS?
Ada beberapa cara yang bisa diterapkan untuk mencegah serangan XSS, yaitu:
Sanitasi input
Langkah pertama dalam mencegah serangan XSS adalah melakukan sanitasi input. Setiap input yang diterima dari pengunjung harus dibersihkan dari karakter-karakter yang berpotensi berbahaya sebelum diproses atau ditampilkan.
Penerapan Content Security Policy (CSP)
Content security policy menjadi cara yang efektif untuk mencegah serangan XSS. Dengan CSP, developer dapat menentukan sumber mana saja yang dapat diandalkan oleh browser untuk memuat dan menjalankan skrip. Proses ini akan mencegah eksekusi skrip berbahaya yang berasal dari sumber yang tidak terpercaya.
Penggunaan HTTPOnly cookies
Dengan menandai cookies sebagai HTTPOnly, engineer bisa mencegah skrip berbahaya agar tidak mengakses cookies tersebut. Cara ini penting untuk mencegah pencurian informasi sensitif seperti session ID.
Penggunaan Fitur Escape Output
Ketika menampilkan data yang diterima dari pengunjung, pastikan untuk selalu melakukan 'escape' terhadap karakter-karakter yang berpotensi berbahaya. Fungsi 'escape' akan mengubah karakter-karakter tersebut menjadi format yang aman dan tidak bisa dieksekusi sebagai skrip.
Edukasi dan pelatihan
Bagi seorang developer, memiliki pengetahuan dan kesadaran tentang serangan XSS dan bagaimana cara mencegahnya sangatlah penting. Dengan pengetahuan ini, developer dapat mendesain dan membangun aplikasi yang lebih aman.
Mulai karirmu dalam
software-engineer
Belajar di RevoU! Dapatkan skill digital paling in-demand langsung dari praktisi terbaik di bidangnya. Kelas online 100% LIVE, 1:1 career coaching, dan akses ke Community Hub dengan 6000+ member selamanya untuk support perkembangan karir kamu!