Cookies
Cookie adalah potongan data kecil yang dikirim server kepada klien (biasanya web browser) dan disimpan oleh klien. Cookie kemudian dikirim kembali ke server pada setiap permintaan berikutnya, memungkinkan server mengenali klien dan mempertahankan status.
Cookie Attributes
Cookie memiliki sejumlah atribut yang mengontrol perilaku dan keamanannya:
- Name - Nama unik untuk mengidentifikasi cookie.
- Value - Data yang disimpan dalam cookie, biasanya berupa session identifier atau data kecil lainnya.
- Domain - Menentukan domain mana yang
dapat menerima cookie (misal
example.comatausub.example.com). - Path - Menentukan jalur URL mana di
dalam domain yang dapat mengakses cookie (misal
/berarti seluruh domain,/adminhanya halaman admin). - Expires / Max-Age - Menentukan masa
berlaku cookie.
Expiresmenetapkan tanggal dan waktu absolut, sedangkanMax-Agemenetapkan umur cookie dalam detik. Tanpa atribut ini, cookie menjadi session cookie yang akan dihapus saat browser ditutup. - Secure - Cookie hanya boleh dikirim melalui koneksi HTTPS, bukan HTTP biasa. Ini mencegah pencurian cookie melalui serangan man-in-the-middle.
- HttpOnly - Cookie tidak dapat
diakses oleh skrip JavaScript sisi klien melalui
document.cookie. Ini melindungi cookie dari serangan Cross-Site Scripting (XSS). - SameSite - Mengontrol apakah
cookie dikirim pada permintaan lintas situs. Nilai yang
tersedia:
Strict- Cookie tidak pernah dikirim pada permintaan lintas situs.Lax- Cookie dikirim pada navigasi tingkat atas (misal mengklik tautan) tetapi tidak pada permintaan lintas situs lainnya.None- Cookie dikirim pada semua permintaan, termasuk lintas situs (harus disertai atributSecure).
Session vs Persistent Cookies
Session Cookies - Hanya disimpan di memori browser
dan dihapus saat browser ditutup. Tidak memiliki atribut
Expires atau Max-Age. Cocok untuk
menyimpan session ID sementara selama pengguna aktif.
Persistent Cookies - Tetap tersimpan di disk meskipun browser ditutup, hingga mencapai waktu kedaluwarsa yang ditentukan. Digunakan untuk "ingat saya", preferensi pengguna, atau pelacakan jangka panjang.
Cookie Security
Beberapa mekanisme keamanan utama pada cookie:
HttpOnly - Mencegah XSS Access
Atribut HttpOnly melarang JavaScript mengakses
cookie melalui document.cookie. Jika seorang
penyerang berhasil menyuntikkan skrip XSS ke halaman web, ia tetap
tidak dapat membaca cookie yang ditandai
HttpOnly. Ini adalah pertahanan penting untuk
melindungi session cookie yang berisi token autentikasi.
Secure - Mencegah HTTP
Atribut Secure memastikan cookie hanya dikirim
melalui saluran HTTPS terenkripsi. Jika halaman dimuat melalui HTTP
biasa, cookie dengan atribut Secure tidak akan
dikirim. Ini mencegah penyerang yang berada di jaringan yang sama
(misal WiFi publik) mencegat cookie melalui serangan
man-in-the-middle atau packet sniffing.
SameSite - Mencegah CSRF
Atribut SameSite melindungi dari serangan Cross-Site
Request Forgery (CSRF). Dengan nilai Strict
atau Lax, browser tidak akan mengirim cookie
autentikasi pada permintaan yang berasal dari situs lain. Misalnya,
jika pengguna sudah login ke bank.com dan mengunjungi
evil.com yang memuat formulir yang dikirim ke
bank.com, cookie autentikasi tidak akan
disertakan dalam permintaan tersebut.
Cookie Theft
Pencurian cookie adalah salah satu ancaman keamanan web yang paling umum. Penyerang dapat mencuri cookie melalui:
- Cross-Site Scripting (XSS) - Menyuntikkan skrip jahat untuk membaca
document.cookie(dicegah denganHttpOnly). - Man-in-the-Middle (MITM) - Mencegat
lalu lintas jaringan tidak terenkripsi (dicegah dengan
Securedan HTTPS). - Cross-Site Request Forgery (CSRF) - Memanfaatkan cookie yang dikirim secara otomatis untuk
melakukan aksi tanpa sepengetahuan pengguna (dicegah dengan
SameSite). - Session Hijacking - Mencuri session ID dari cookie untuk menyamar sebagai pengguna yang sah.
Cookie yang dicuri dapat digunakan untuk session replay attack, di mana penyerang menggunakan cookie tersebut untuk mengakses akun korban tanpa perlu mengetahui password.