Clickjacking adalah serangan yang menipu pengguna agar mengklik sesuatu yang berbeda dari yang mereka kira, biasanya dengan menyembunyikan halaman sungguhan di balik tampilan palsu. Pengguna merasa menekan tombol yang tidak berbahaya, padahal kliknya mendarat di tombol penting pada situs tempat mereka sedang login. Artikel ini menjelaskan cara kerja clickjacking, dampaknya, dan cara mencegahnya lewat konfigurasi header yang sederhana.
Apa Itu Clickjacking?
OWASP menyebut clickjacking juga dikenal sebagai UI redress attack. Menurut MDN, penyerang membuat halaman pengecoh yang menyematkan situs target di dalam iframe tersembunyi, lalu menempatkan elemen palsu, misalnya tombol berhadiah, tepat di atas kontrol sensitif milik situs target. Ketika pengguna mengklik elemen palsu itu, kliknya sebenarnya mengenai kontrol sungguhan di situs yang disematkan.
MDN memberi ilustrasi sebuah situs bank dengan tombol konfirmasi transaksi. Karena pengguna sudah login, permintaan yang dihasilkan klik itu membawa kredensial asli dan berhasil diproses. Serangan ini tidak mencuri kata sandi; ia memanfaatkan sesi yang sedang aktif dan kepercayaan situs pada klik yang tampak datang dari pengguna.
Dampak Clickjacking
Dampaknya mengikuti apa yang bisa dilakukan satu klik di situs target. Beberapa contoh yang realistis:
- Mengonfirmasi transaksi, pembelian, atau pengiriman data.
- Mengubah pengaturan privasi atau keamanan akun, misalnya memberi izin ke aplikasi pihak ketiga.
- Menyukai, mengikuti, atau membagikan konten tanpa disadari.
- Menyetujui tindakan sensitif di panel admin bila administrator yang tertipu.
Serupa dengan CSRF, clickjacking memanfaatkan sesi yang sedang login. Bedanya, pada clickjacking klik dilakukan sendiri oleh pengguna di halaman asli yang tampil di dalam frame, sehingga token CSRF saja tidak menghentikannya. Kombinasi pertahanan terhadap keduanya tetap diperlukan.
Cara Mencegah Clickjacking
OWASP Clickjacking Defense Cheat Sheet dan MDN sepakat bahwa pertahanan utamanya adalah membatasi siapa yang boleh menyematkan halaman Anda.
1. Gunakan frame-ancestors pada Content Security Policy
Direktif frame-ancestors menentukan dokumen mana yang boleh menyematkan halaman Anda dalam frame. Nilai 'none' memblokir semua penyematan dan disarankan kecuali halaman memang perlu disematkan. Nilai 'self' hanya mengizinkan situs yang sama, dan Anda juga bisa mendaftar origin tertentu. Pengaturan ini dikirim sebagai header respons HTTP, bukan lewat tag meta. Contoh:
Content-Security-Policy: frame-ancestors 'none'Direktif ini adalah bagian dari Content Security Policy, dan MDN menyebutnya pengganti modern bagi X-Frame-Options.
2. Tambahkan X-Frame-Options untuk browser lama
Header X-Frame-Options bernilai DENY (tidak boleh disematkan sama sekali) atau SAMEORIGIN (hanya situs yang sama). Menurut MDN, bila kedua header dipasang, browser yang mendukung frame-ancestors akan mengabaikan X-Frame-Options, sehingga memasang keduanya melindungi browser lama tanpa merugikan browser baru. OWASP mencatat nilai ALLOW-FROM sudah usang, dan header ini hanya menerima satu nilai sehingga tidak bisa mengizinkan situs sendiri sekaligus pihak ketiga.
3. Atur cookie sesi dengan SameSite
Dengan SameSite bernilai Lax atau Strict, cookie tidak ikut terkirim pada permintaan dari frame yang bukan satu situs dengan dokumen induknya, sehingga server tidak memperlakukan klik itu sebagai pengguna yang sedang login. OWASP menegaskan ini hanya mitigasi sebagian: SameSite tidak mencegah penyematan itu sendiri dan tidak melindungi halaman tanpa login atau serangan dari subdomain penyerang.
4. Jangan mengandalkan frame-busting lama
Skrip frame-busting adalah solusi lama untuk browser yang belum mengenal header di atas. OWASP memperingatkan agar tidak memakai pengecekan satu baris sederhana karena bisa dikalahkan, misalnya lewat penyematan ganda atau iframe bersandbox. Header respons tetap pilihan yang jauh lebih andal.
5. Perkuat aksi yang sangat sensitif
Untuk aksi yang berisiko tinggi, tambahkan otorisasi transaksi di sisi server, misalnya konfirmasi ulang atau autentikasi tambahan. OWASP mencatat varian seperti DoubleClickjacking memakai jendela terpisah, bukan frame, sehingga aturan pembatasan frame saja tidak menutupnya.
Cara Memeriksa Situs Anda
Pemeriksaannya sederhana. Lihat header respons dari halaman penting, khususnya halaman login dan halaman aksi sensitif, dan pastikan frame-ancestors atau X-Frame-Options ada. Alat pengembang browser dapat menampilkan header tersebut di tab Network. Jika situs Anda memang harus disematkan oleh mitra, daftarkan origin mitra secara eksplisit, jangan membuka untuk semua. Header yang hilang atau salah konfigurasi termasuk kategori security misconfiguration yang sering ditemukan pada audit. Pengujian pada situs yang bukan milik Anda tanpa izin dapat melanggar Pasal 332 KUHP.
Satu catatan tambahan untuk situs yang memakai widget pihak ketiga: jangan menghapus pembatasan frame hanya karena sebuah integrasi tidak berjalan. Cari tahu origin yang sebenarnya perlu menyematkan halaman Anda, daftarkan hanya origin tersebut, lalu uji ulang dari lingkungan staging sebelum mengubah produksi. Perubahan header seperti ini kecil, mudah dibatalkan, dan sebaiknya dicatat dalam daftar konfigurasi keamanan yang ditinjau rutin.
Pertanyaan yang Sering Diajukan
Apakah antivirus bisa melindungi dari clickjacking?
Tidak dapat diandalkan. Serangan ini bekerja lewat halaman web, bukan lewat berkas berbahaya. Perlindungan yang efektif berada di sisi pemilik situs lewat header pembatas frame.
Apa beda frame-ancestors dan X-Frame-Options?
frame-ancestors lebih modern dan fleksibel karena dapat mendaftar banyak origin, sedangkan X-Frame-Options hanya punya nilai DENY atau SAMEORIGIN dan berguna sebagai cadangan untuk browser lama.
Apakah semua situs perlu memblokir penyematan?
Sebaiknya begitu, kecuali ada kebutuhan sah untuk disematkan, misalnya widget pembayaran. Dalam kasus itu, izinkan hanya origin yang dipercaya.
Bagaimana pengguna biasa menghindari clickjacking?
Waspadai halaman yang meminta klik pada elemen aneh, hindari membuka tautan tidak dikenal saat masih login ke layanan penting, dan keluar dari akun sensitif setelah selesai. Pertahanan sesungguhnya tetap ada pada konfigurasi situs.
Kesimpulan
Clickjacking mengandalkan satu hal: situs Anda dapat ditampilkan di dalam frame milik orang lain. Menutup kemungkinan itu dengan frame-ancestors, ditambah X-Frame-Options dan cookie SameSite, menyelesaikan sebagian besar risikonya dalam hitungan menit. Jika Anda ingin memahami celah-celah seperti ini dengan lebih terstruktur, kursus keamanan dari Linuxhackingid dapat menjadi titik mulai, dan artikel tentang XSS melengkapi gambaran serangan berbasis browser.
Setiap artikel ditinjau pimpinan praktik yang menangani pekerjaannya sebelum terbit.
