CyberLearn // Learn. Explore. Secure.0
Kembali ke Pusat Belajar
Modul 22/36L2 · MenengahBelum mulai 16 menit

Keamanan Sesi

Pelajari bagaimana aplikasi mengingat pengguna yang sudah login, risiko pembajakan sesi, dan praktik pengelolaan sesi serta cookie yang aman.

Tujuan Pembelajaran

  • Menjelaskan fungsi sesi dan pengenal sesi pada aplikasi web
  • Memahami risiko pembajakan sesi dan session fixation secara konseptual
  • Mengonfigurasi cookie sesi dengan flag keamanan yang tepat
  • Menerapkan masa berlaku, rotasi, dan pengakhiran sesi yang benar

01Mengapa sesi dibutuhkan

HTTP bersifat tanpa status: setiap permintaan berdiri sendiri. Agar pengguna tidak perlu login pada setiap halaman, server membuat sesi setelah autentikasi berhasil dan memberi browser sebuah pengenal sesi, biasanya disimpan dalam cookie.

Pengenal sesi pada dasarnya berfungsi seperti tiket masuk. Siapa pun yang memegang tiket valid dianggap sebagai pengguna tersebut, sehingga tiket itu harus acak, sulit ditebak, dan terlindungi.

02Risiko terhadap sesi

Ancaman utama berpusat pada pengenal sesi yang bocor, dapat ditebak, atau dapat dipaksakan.

  • Pembajakan sesi: pengenal sesi valid milik pengguna diperoleh pihak lain, misalnya lewat XSS, jaringan tidak aman, atau perangkat bersama
  • Session fixation: pengguna dipaksa memakai pengenal sesi yang sudah diketahui pihak lain sebelum login
  • CSRF: browser pengguna dimanfaatkan untuk mengirim permintaan yang tidak dikehendaki saat sesi aktif
  • Pengenal sesi lemah: nilai berurutan atau terlalu pendek sehingga dapat ditebak

03Mengamankan cookie sesi

Atribut cookie adalah kontrol murah dengan manfaat besar.

  • HttpOnly: cookie tidak dapat dibaca oleh JavaScript sehingga lebih sulit dicuri lewat XSS
  • Secure: cookie hanya dikirim melalui HTTPS
  • SameSite (Lax atau Strict): membatasi pengiriman cookie pada permintaan lintas situs sehingga mengurangi CSRF
  • Gunakan awalan nama __Host- bila memungkinkan dan batasi cakupan domain serta path
  • Pengenal sesi dihasilkan oleh generator acak yang aman secara kriptografis

04Siklus hidup sesi

Buat pengenal sesi baru setiap kali pengguna login atau naik tingkat hak akses, sehingga session fixation tidak berhasil. Terapkan batas waktu menganggur dan batas waktu absolut, lebih pendek untuk aplikasi sensitif.

Saat logout, hapus sesi di server, bukan hanya cookie di browser. Berikan fitur untuk melihat dan mengakhiri sesi di perangkat lain, dan akhiri semua sesi ketika kata sandi diganti. Tambahkan token anti-CSRF pada tindakan yang mengubah data.

Contoh Praktis (Aman)

Konfigurasi sesi aman di Express

Contoh defensif memakai express-session. Perhatikan flag cookie, masa berlaku, dan regenerasi sesi setelah login.

import session from 'express-session';

app.use(session({
  name: '__Host-sid',
  secret: process.env.SESSION_SECRET,   // rahasia kuat dari environment
  resave: false,
  saveUninitialized: false,
  cookie: {
    httpOnly: true,
    secure: true,
    sameSite: 'lax',
    maxAge: 30 * 60 * 1000              // 30 menit
  }
}));

// Setelah login berhasil: buat pengenal sesi baru
req.session.regenerate((err) => {
  if (err) return next(err);
  req.session.userId = user.id;
  res.redirect('/dashboard');
});

Rangkuman

  • Pengenal sesi berfungsi seperti tiket, sehingga harus acak, rahasia, dan terlindungi
  • Ancaman utama: pembajakan sesi, session fixation, dan CSRF
  • Gunakan cookie HttpOnly, Secure, dan SameSite serta generator acak yang aman
  • Regenerasi sesi saat login, terapkan batas waktu, dan hancurkan sesi di server saat logout

Mini Quiz

Pilih satu jawaban untuk setiap soal, lalu tekan "Periksa Jawaban".

Soal 1/3

Apa fungsi atribut HttpOnly pada cookie sesi?

Soal 2/3

Mengapa pengenal sesi baru perlu dibuat setelah login?

Soal 3/3

Apa yang sebaiknya dilakukan saat pengguna logout?

0/3 terjawab