HttpOnly dan Secure adalah dua atribut keamanan (flag) krusial yang ditambahkan pada HTTP cookie untuk melindungi data sensitif seperti token sesi (session ID) dari ancaman peretasan modern. Atribut HttpOnly mencegah skrip sisi klien (seperti JavaScript) mengakses cookie, sehingga melumpuhkan serangan Cross-Site Scripting (XSS) dalam mencuri kredensial pengguna. Sementara itu, atribut Secure memastikan cookie hanya ditransmisikan melalui saluran terenkripsi HTTPS, mencegah intersepsi data melalui serangan Man-in-the-Middle (MitM) di jaringan yang tidak aman.
Penerapan kedua flag ini merupakan standar wajib dalam pengembangan web modern untuk mematuhi protokol keamanan seperti OWASP Top 10. Tanpa konfigurasi ini, aplikasi web rentan terhadap pembajakan sesi (session hijacking) yang memungkinkan penyerang menyamar sebagai pengguna sah tanpa harus mengetahui kata sandi mereka.
Matriks Perbandingan Atribut Cookie
Tabel berikut menguraikan perbedaan fungsi, mekanisme perlindungan, dan skenario ancaman yang dicegah oleh masing-masing flag:
| Atribut Cookie | Fungsi Utama | Ancaman yang Dicegah | Dampak jika Dinonaktifkan |
|---|---|---|---|
| HttpOnly | Memblokir akses JavaScript (document.cookie) terhadap cookie. | Cross-Site Scripting (XSS) pencurian token sesi. | Skrip berbahaya dapat membaca cookie dan mengirimkannya ke server penyerang. |
| Secure | Membatasi transmisi cookie hanya melalui protokol HTTPS. | Man-in-the-Middle (MitM) & Penyadapan jaringan HTTP. | Cookie dikirim lewat HTTP biasa (plaintext) dan dapat disadap di Wi-Fi publik. |
| SameSite | Mengontrol pengiriman cookie lintas situs (Cross-Site). | Cross-Site Request Forgery (CSRF). | Situs lain dapat memicu permintaan menggunakan kredensial sesi korban secara ilegal. |
Implementasi Teknis pada Header HTTP
Penetapan flag ini dilakukan di sisi server melalui header respons Set-Cookie saat aplikasi web membuat sesi baru atau menyimpan preferensi pengguna. Berikut adalah contoh sintaks penerapan yang benar:
Set-Cookie: session_id=xyz123abc789; Path=/; Domain=example.com; Secure; HttpOnly; SameSite=Strict
Langkah-Langkah Konfigurasi di Backend
- Pastikan Dukungan HTTPS: Sebelum mengaktifkan flag
Secure, pastikan seluruh domain aplikasi telah dikonfigurasi menggunakan sertifikat SSL/TLS yang valid dan mengarahkan lalu lintas HTTP ke HTTPS (HTTP Strict Transport Security / HSTS). - Atur Header di Framework: Gunakan konfigurasi bawaan dari framework web yang digunakan (seperti Express.js, Django, Laravel, atau Spring Boot) untuk otomatis menyertakan flag pada setiap pembuatan cookie autentikasi.
- Validasi via Browser DevTools: Buka Developer Tools di peramban, navigasi ke tab Application atau Storage, lalu periksa bagian Cookies untuk memastikan kolom
HttpOnlydanSecuretercentang benar (bernilai true).
Mitigasi Kesalahan Konfigurasi Umum
Pengembang sering kali menghadapi kendala di mana cookie tidak terbaca oleh aplikasi karena salah memahami fungsi flag ini. Berikut adalah panduan penanganan masalah di lapangan:
- Cookie Tidak Terbaca oleh JavaScript: Jika aplikasi memang memerlukan akses frontend ke cookie tertentu (misalnya untuk menyimpan preferensi mode gelap), jangan terapkan
HttpOnlypada cookie tersebut. Simpan hanya data non-sensitif di sana, sementara token otentikasi wajib menggunakanHttpOnly. - Cookie Hilang saat Pengujian Lokal (Localhost): Flag
Secureterkadang mengabaikan cookie di lingkungan lokal jika server berjalan pada protokol HTTP murni. Gunakan localhost dengan sertifikat SSL self-signed atau atur pengecualian lingkungan pengembangan pada server backend.