
Mengingat Pengguna Tanpa Bertanya Ulang
HTTP adalah protokol yang *Stateless* (Pelupa). Setiap kali kamu berpindah dari halaman "Beranda" ke halaman "Profil", server menganggapmu sebagai pengunjung baru yang tidak dikenal. Lalu, bagaimana Facebook tahu bahwa kamu sudah login saat kamu mengklik halaman foto-foto tanpa perlu memasukkan password lagi?
Teknologi klasik yang memecahkan masalah "lupa ingatan" ini adalah kombinasi dari Session (Sesi) dan Cookie (Biskuit).
Cara Kerja Session-Based Authentication
Bayangkan kamu masuk ke sebuah klub malam eksklusif. Alurnya persis seperti ini:
- Validasi Awal: Kamu mengetik Email dan Password (Menyerahkan KTP ke satpam).
- Membuat Session (Catatan di Server): Server memvalidasi passwordmu dengan Database. Jika benar, Server akan menulis di buku catatan memori/RAM-nya (Session Store): "Ada sesi baru bernama Sesi-ABC. Sesi ini milik user ID 15 (Budi)."
- Memberi Cookie (Stempel Tangan): Agar Budi tidak ditanya KTP lagi saat masuk ke ruangan VIP, Server memberikan Budi sebuah Stempel Tangan berwujud teks acak
Sesi-ABC. Stempel ini disebut Session ID, dan dikirim ke browser Budi untuk disimpan secara paksa di dalam Cookie. - Pengecekan Otomatis: Setiap kali Budi mengklik halaman baru di website itu, browser Budi (secara otomatis dan tidak terlihat) akan selalu menyodorkan Stempel Cookie (
Sesi-ABC) ke muka Server. - Validasi Cepat: Server menerima stempel itu, mencocokkannya dengan buku catatan memorinya: "Oh, Stempel Sesi-ABC ini masih aktif dan ini miliknya si Budi. Oke, silakan lewat!"
Kelebihan dan Kelemahan Session
Metode Session & Cookies ini adalah cara *default* (bawaan) yang masih digunakan oleh raksasa seperti PHP, Laravel, atau Ruby on Rails untuk website (Web-App).
- Kelebihan Keamanan: Server memegang kendali 100%. Jika ada hacker yang mencuri stempel Cookie Budi, Admin bisa langsung menghapus catatan
Sesi-ABCdari memori server. Stempel curian itu seketika menjadi sampah tak berguna (Revoked). (Ini hal yang susah dilakukan oleh JWT!). - Kelemahan Skalabilitas: Catatan Session disimpan di RAM (Memori) Server. Jika pengunjung yang Login ada 1 juta orang secara bersamaan, memori server akan habis hanya untuk mencatat hal tersebut. Solusi mahalnya adalah memindahkan catatan Session tersebut ke Database InMemory terpisah yang super cepat (seperti Redis).
Peringatan Keamanan Cross-Site Request Forgery (CSRF)
Karena browser terlalu rajin dan selalu mengirim Cookie secara otomatis ke server yang dituju, sistem Session sangat rentan terhadap serangan CSRF (Hacker memancingmu mengklik link jebakan yang diam-diam menyuruh browsermu mentransfer uang di web aslinya). Untuk mengatasinya, backend Session WAJIB mengimplementasikan token Anti-CSRF di setiap formulir (Form) datanya.
Mau langsung pakai template?
Jelajahi template gratis dan premium di TampilKit untuk mempercepat proses development project kamu.
Browse Templates