Cookie Security — Security

Memahami Cookie dan Keamanannya Cookie adalah potongan kecil data yang disimpan di browser dan dikirim kembali ke server di setiap request. Cookie digunakan…

Cookie adalah potongan kecil data yang disimpan browser dan dikirim balik ke server di tiap request. Bayangin gelang masuk acara: server memasangkannya di browser, dan browser menunjukkannya tiap kali datang. Flag cookie adalah aturan di gelang itu. Tanpa flag yang benar, gelangnya gampang dicuri atau dipakai di tempat yang salah.

🧪 Tebakan cepat: kamu klik sebuah link dari situs lain menuju situs bank-mu. Cookie bank-mu yang ber-SameSite=Lax ikut terkirim atau tidak? Tebak dulu, jawabannya ada di bagian "SameSite".

Cookie: dikirim tiap request

Server memasang cookie lewat header Set-Cookie, dan browser mengirimnya kembali di tiap request ke situs itu. Yang dititipkan sebaiknya cuma nomor tiket (session ID), bukan data penting. Tiga flag di bawah ini menentukan seberapa aman cookie itu.

HttpOnly: JavaScript tidak bisa baca

Flag HttpOnly membuat cookie tidak bisa dibaca oleh JavaScript lewat document.cookie. Gunanya: kalau situsmu kena XSS, script penyerang tetap tidak bisa mencuri session ID.

Set-Cookie: sessionId=abc123; HttpOnly

Secure: cuma lewat HTTPS

Flag Secure membuat cookie cuma dikirim lewat koneksi HTTPS. Di koneksi http:// biasa, cookie tidak ikut terkirim, jadi penyadap jaringan tidak bisa menangkapnya. Flag yang memastikan cookie cuma lewat HTTPS adalah Secure.

Set-Cookie: sessionId=abc123; HttpOnly; Secure

SameSite: kapan cookie dikirim lintas situs

Flag SameSite mengatur apakah cookie ikut dikirim waktu request datang dari situs lain (cross-site). Ini proteksi utama terhadap CSRF. Nilainya ada tiga. Anggap koneksi sudah HTTPS:

Jenis request Strict Lax None
Dari situsmu sendiri (same-site) dikirim dikirim dikirim
Klik link dari situs lain (navigasi GET top-level) tidak dikirim dikirim
POST atau fetch dari situs lain tidak tidak dikirim
Set-Cookie: sessionId=abc123; HttpOnly; Secure; SameSite=Lax

Prefix cookie

Browser modern mendukung prefix nama untuk keamanan tambahan:

Set-Cookie: __Host-sessionId=abc123; Secure; HttpOnly; Path=/

⚠️ Jebakan yang sering ketemu

TL;DR: Cookie dikirim ke server tiap request, jadi flag-nya menentukan keamanannya. HttpOnly menghalangi JavaScript membaca cookie (lindungi dari XSS). Secure membuat cookie cuma lewat HTTPS. SameSite mengatur pengiriman lintas situs: Strict tidak pernah mengirim cross-site, Lax mengirim cuma untuk klik link (navigasi GET top-level), None selalu mengirim tapi wajib Secure. Untuk cookie session yang kuat: HttpOnly; Secure; SameSite=Lax (atau Strict), dan pertimbangkan prefix __Host-.

Yang akan kamu pelajari