
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