Tabnabbing untuk Website Bisnis Indonesia: Cara Satu Atribut HTML Mencegah Phishing Lewat Tab Anda di 2026
TL;DR: Tabnabbing adalah serangan keamanan web di mana tab eksternal yang dibuka via
target="_blank"dapat mengubah halaman asal jadi situs phishing lewat propertiwindow.opener. Pencegahannya satu atribut HTML, yaiturel="noopener noreferrer". Browser modern memberlakukan ini secara default sejak 2021, namun in-app browser dan versi lawas masih rentan, sehingga menambahkannya secara eksplisit tetap praktik aman.
Saat mengaudit website sebuah brand fashion lokal awal 2026, saya menemukan ratusan link afiliasi yang membuka tab baru tanpa atribut rel. Brand-nya tidak menyadari setiap link itu adalah pintu masuk potensial untuk mengubah tab pertama mereka jadi halaman login marketplace palsu. Pengunjung yang ditipu bukan akan menyalahkan situs perantara, melainkan domain brand tempat mereka pertama klik.
Tabnabbing jarang dibahas dibanding XSS atau clickjacking, tapi konsekuensinya sama serius: hilangnya kepercayaan pengguna pada domain Anda.
Cara Tabnabbing Bekerja
Saat pengguna mengklik tautan dengan atribut target="_blank", browser membuka tab baru dan, secara default lama, memberi tab baru itu referensi window.opener ke tab asal. Tanpa pengaman, halaman pihak ketiga di tab baru dapat menjalankan JavaScript sederhana:
<!-- Berbahaya, tanpa rel -->
<a href="https://situs-pihak-ketiga.com" target="_blank">Lihat partner kami</a>
// Skrip di situs-pihak-ketiga.com
window.opener.location = "https://halaman-phishing.com/login-marketplace";
Pengguna kembali ke tab asal, melihat halaman yang tampak seperti login situs Anda, lalu memasukkan kredensial. Domain di address bar memang sudah berubah, tapi banyak pengguna tidak memperhatikan. Detail teknis bisa dibaca di MDN tentang rel="noopener".
Solusi: Satu Atribut HTML
Pengaman utama adalah atribut rel:
| Atribut | Fungsi |
|---|---|
rel="noopener" | Memutus akses window.opener dari tab baru |
rel="noreferrer" | Tidak mengirim header Referer |
rel="noopener noreferrer" | Kombinasi: rekomendasi standar |
<!-- Aman -->
<a href="https://partner.com" target="_blank" rel="noopener noreferrer">Partner kami</a>
Sejak Chrome 88, Firefox 79, dan Safari 12.1, browser memberlakukan noopener secara default. Namun in-app browser di aplikasi Instagram, TikTok, WhatsApp, dan beberapa email client tidak konsisten. Menambahkan rel eksplisit menutup celah pada lingkungan-lingkungan tersebut.
Studi Kasus: Audit Link User-Generated
Saat membantu mengaudit Nalesha, e-commerce parfum, kami menemukan kombinasi risiko yang lebih halus: kolom review pengguna mengizinkan link clickable, dan beberapa review berisi link afiliasi panjang. Solusinya bukan menonaktifkan link, melainkan memastikan parser link otomatis menambahkan rel="noopener noreferrer nofollow" pada setiap output. Untuk konteks lebih lengkap, baca studi kasus Nalesha tentang trust e-commerce parfum.
Pelajaran yang berlaku umum: link user-generated adalah area paling rentan, karena Anda tidak bisa mengontrol situs tujuan. Pasang rel di template render, jangan andalkan moderator manual.
Audit Praktis untuk Tim Marketing
Untuk marketer Indonesia yang tidak menulis kode sehari-hari, audit cukup dilakukan dalam tiga langkah:
- Inspeksi link footer dan halaman partner. Klik kanan, pilih Inspect, periksa atribut
rel. Jikatarget="_blank"ada tapireltidak ada, koordinasikan dengan developer. - Audit konten user-generated. Komentar, review, profil author, dan bio yang menerima URL.
- Cek email marketing. Banyak template email memakai
target="_blank"tanparel.
Pasangkan ini dengan Subresource Integrity untuk skrip pihak ketiga, Content Security Policy untuk kontrol sumber, dan Referrer-Policy untuk privasi data. Empat lapisan ini menutup mayoritas vektor serangan halus yang sering meleset di audit standar.
Pertanyaan Umum
Apakah saya tetap perlu menambah rel="noopener" jika browser sudah otomatis?
Ya, sebagai praktik defensif. Browser default hanya berlaku untuk versi modern. In-app browser, browser lawas, dan beberapa konfigurasi enterprise tidak konsisten. Menambah eksplisit menutup celah tanpa biaya performa.
Apakah rel="noreferrer" akan mengganggu data analytics saya?
Ya, link dengan noreferrer tidak mengirim Referer ke situs tujuan. Untuk link internal dan affiliate yang Anda tracking sendiri, gunakan UTM atau parameter ID. Untuk link eksternal biasa, kehilangan referrer data tidak signifikan.
Apakah tabnabbing sama dengan clickjacking?
Berbeda. Tabnabbing memanfaatkan tab yang dibuka pengguna, sementara clickjacking memakai iframe tersembunyi untuk menipu klik. Pencegahan masing-masing juga berbeda: rel="noopener" untuk tabnabbing, X-Frame-Options atau frame-ancestors di CSP untuk clickjacking.
Bagaimana jika menggunakan WordPress atau CMS lain?
Sebagian besar CMS modern (WordPress 5.1+, Webflow, Framer) sudah menambahkan rel="noopener" otomatis pada link target="_blank". Verifikasi dengan inspect element. Untuk Next.js dan framework custom, pastikan komponen Link Anda menambahkan atribut ini secara default.
Penutup: Lapisan Trust Tidak Datang Sekaligus
Tabnabbing bukan ancaman paling besar, tapi adalah contoh celah yang sederhana untuk ditutup dan akan membedakan website yang dirawat dari yang dibiarkan. Untuk bisnis di Indonesia yang membangun otoritas lewat traffic organik, kepercayaan pengunjung adalah modal jangka panjang. Satu insiden phishing yang melibatkan domain Anda bisa menghapus berbulan-bulan upaya konten dan SEO.
Audit link Anda hari ini. Mulai dari halaman partner, footer, dan komentar. Jika tim Anda mengelola CMS sendiri, pastikan template render link otomatis menambahkan rel="noopener noreferrer". Itu langkah lima menit yang menutup celah berbulan-bulan.
Artikel Terkait
Website Bisnis
Cara Marketer Indonesia Pasang CSS field-sizing: content di Next.js untuk Form Kontak, Pangkas 6 KB Library Autosize dan Hilangkan Hydration Mismatch SSR di 2026
Pasang field-sizing: content di Next.js untuk auto-resize textarea tanpa JS. Hemat 6 KB autosize, hilangkan hydration mismatch SSR, dan jaga INP stabil di form panjang.
Website Bisnis
Cara Marketer Indonesia Pasang CSS light-dark() di Next.js untuk Dark Mode Otomatis, Pangkas 38 Baris Media Query dan Hilangkan Hydration Mismatch Theme di 2026
Ganti next-themes dual class jadi 1 fungsi CSS. Studi kasus Vetmo: bundle CSS turun 24%, LCP membaik 180 ms, dan hydration mismatch dark mode hilang total.
Website Bisnis
Cara Marketer Indonesia Pasang CSS reading-flow di Next.js untuk Layout Flex dan Grid, Sinkronkan Urutan Tab dengan Visual dan Lulus Audit WCAG 2.2 di 2026
Pasang CSS reading-flow di Next.js untuk menyamakan urutan keyboard tab dengan layout visual. Hilangkan tabindex manual dan lulus audit WCAG 2.2 level AA.
Butuh website yang benar-benar bekerja?
Hubungi Vito untuk konsultasi gratis 15 menit.
WhatsApp Sekarang