Back to blog
Security

SameSite Cookie: Kenapa Kamu Bisa Ke-transfer Cuma Gara-Gara Buka Website Iseng?

Budi lagi login internet banking di tab sebelah. Dia iseng buka website meme di tab lain. Tanpa Budi klik apapun di website meme itu, saldo rekeningnya berkurang sendiri.

super admin·02 September 2026·2 min read
SameSite Cookie: Kenapa Kamu Bisa Ke-transfer Cuma Gara-Gara Buka Website Iseng?
Article Content

Bayangin Budi Login Bank di Satu Tab, Buka Meme di Tab Lain...

Bayangin Budi sedang login ke internet banking-nya di Tab 1. Di Tab 2, dia iseng membuka website-meme-lucu.com. Website meme itu ternyata jahat — di baliknya tersembunyi sebuah

tak terlihat yang otomatis ter-submit ke bank-budi.com/transfer?ke=rekening-hacker&jumlah=5000000 begitu halaman selesai dimuat, memakai teknik auto-submit form dengan JavaScript.

Anehnya, permintaan transfer palsu itu berhasil diproses oleh server bank! Kenapa? Karena browser Budi otomatis menyertakan cookie sesi login banknya di setiap request ke bank-budi.com, termasuk request yang datang diam-diam dari website meme tadi. Server bank melihat cookie sesi valid, dan menganggap itu benar-benar Budi yang meminta transfer.

Masalahnya: Cookie Tidak Peduli Siapa yang Memicu Request-nya

Sebelum ada perbaikan, browser mengirim cookie ke sebuah domain tanpa peduli apakah request itu benar-benar diinisiasi oleh pengguna yang sedang berada di domain tersebut, atau dipicu diam-diam dari website pihak ketiga. Serangan model ini disebut CSRF (Cross-Site Request Forgery).

Nah, Di Sinilah Atribut 'SameSite' pada Cookie Masuk!

SameSite adalah instruksi tambahan saat server men-set cookie, memberi tahu browser kapan boleh dan kapan tidak boleh menyertakan cookie tersebut berdasarkan dari mana request itu berasal.

Set-Cookie: session=abc123; SameSite=Lax; Secure; HttpOnly
  • Strict: Cookie hanya dikirim kalau kamu benar-benar sedang berada dan bernavigasi di dalam domain itu sendiri. Paling aman, tapi kadang bikin pengalaman aneh (misal: klik link dari email lalu diminta login ulang).
  • Lax (nilai default modern): Cookie tetap dikirim untuk navigasi biasa (klik link berpindah halaman), tapi diblokir untuk request diam-diam di latar belakang seperti auto-submit form atau fetch dari website lain. Ini yang menggagalkan skenario Budi tadi.
  • None: Cookie selalu dikirim ke mana saja (dibutuhkan untuk kasus tertentu seperti widget pihak ketiga), tapi wajib dipasangkan dengan atribut Secure (hanya lewat HTTPS).

Intinya: Browser modern sekarang men-default-kan cookie ke SameSite=Lax secara otomatis. Tapi jangan cuma mengandalkan default — untuk cookie sesi yang sensitif, set eksplisit SameSite=Strict atau Lax sendiri, agar tidak bergantung pada perilaku default browser yang bisa saja berbeda-beda.

Mau langsung pakai template?

Jelajahi template gratis dan premium di TampilKit untuk mempercepat proses development project kamu.

Browse Templates