Definisi dan Fungsi Utama HttpOnly Cookie
HttpOnly adalah sebuah flag atau atribut keamanan yang ditambahkan pada cookie HTTP. Fungsi utamanya adalah untuk membatasi akses skrip sisi klien (seperti JavaScript) terhadap cookie tersebut. Dengan mengaktifkan atribut HttpOnly, cookie tidak dapat dibaca atau dimanipulasi melalui document.cookie, sehingga memberikan perlindungan krusial terhadap serangan Cross-Site Scripting (XSS).
Ketika sebuah cookie ditandai sebagai HttpOnly, browser akan memastikan bahwa cookie tersebut hanya dikirimkan ke server melalui permintaan HTTP atau HTTPS. Skrip berbahaya yang disuntikkan ke dalam halaman web oleh peretas tidak akan mampu mencuri data sesi (session ID) yang tersimpan di dalam cookie tersebut, sehingga akun pengguna tetap terlindungi dari pembajakan sesi.
Matriks Perbandingan: Cookie Biasa vs HttpOnly Cookie
| Fitur | Cookie Standar | HttpOnly Cookie |
|---|---|---|
| Akses JavaScript | Dapat dibaca/ditulis | Dilarang |
| Tujuan Utama | Penyimpanan data sesi/preferensi | Keamanan sesi (Session Hijacking) |
| Risiko XSS | Tinggi | Rendah |
| Pengiriman ke Server | Ya | Ya |
Mekanisme Keamanan
Dalam arsitektur web modern, cookie sering digunakan untuk menyimpan token autentikasi. Tanpa atribut HttpOnly, penyerang yang berhasil mengeksekusi skrip berbahaya di browser korban dapat dengan mudah mencuri token tersebut dan mengirimkannya ke server mereka sendiri. Dengan HttpOnly, meskipun skrip berbahaya berhasil berjalan, mereka tidak memiliki akses teknis untuk membaca nilai cookie tersebut.
Implementasi Teknis
Atribut ini diimplementasikan melalui header HTTP Set-Cookie saat server mengirimkan respons ke browser. Berikut adalah contoh format header-nya:
Set-Cookie: session_id=abc123xyz; HttpOnly; Secure
Penjelasan parameter:
- session_id=abc123xyz: Nama dan nilai cookie.
- HttpOnly: Mencegah akses via JavaScript.
- Secure: Memastikan cookie hanya dikirim melalui koneksi terenkripsi (HTTPS).
Kapan Harus Menggunakan HttpOnly?
Penggunaan HttpOnly sangat disarankan untuk semua cookie yang bersifat sensitif, terutama:
- Session ID: Token yang mengidentifikasi sesi login pengguna.
- Token Autentikasi: Data yang digunakan untuk menjaga status masuk pengguna.
- Data Pribadi Sensitif: Informasi yang jika dicuri dapat membahayakan privasi pengguna.
Penting untuk dicatat bahwa HttpOnly bukan solusi tunggal untuk keamanan web. Pengembang tetap harus menerapkan praktik keamanan lainnya seperti validasi input, penggunaan Content Security Policy (CSP), dan sanitasi data untuk meminimalisir celah XSS secara menyeluruh.