Beranda

Security

Web Application Security Fundamentals #0...

Web Application Security Fundamentals #08: Authentication dan Session Management

Bangun login, recovery, MFA, cookie, session rotation, timeout, logout, dan revocation dengan threat model yang benar.

Web Application Security Fundamentals #08: Authentication dan Session Management
4 dibaca
Belum ada penilaian

Authentication memverifikasi identity; session mempertahankan state setelah verifikasi. Authorization menentukan apa yang boleh dilakukan. Mencampur tiga konsep ini menciptakan celah yang sulit terlihat.

Etika dan scope: praktikkan hanya pada local lab, aplikasi milik sendiri, atau sistem yang memberikan izin tertulis. Tutorial ini tidak mengizinkan pengujian terhadap target publik.

Ilustrasi perlindungan web application

Tujuan pembelajaran

  • membedakan authentication, session, dan authorization
  • mengamankan login dan recovery
  • mengatur session ID, cookie, rotation, timeout, logout
  • menguji negative path dan revocation

Prasyarat

Gunakan browser modern, Developer Tools, dan local lab. Catat versi tool serta environment ketika menguji. Output contoh bersifat ilustratif kecuali dinyatakan sebagai hasil pengujian; jangan menganggap perilaku satu stack berlaku universal.

1. Lindungi seluruh lifecycle identity

Review registration, login, MFA enrollment, recovery, email change, password change, account linking, logout, dan deletion. Recovery tidak boleh lebih lemah daripada login.

2. Password handling

Gunakan password hashing khusus seperti Argon2id sesuai guidance dan library resmi; jangan menggunakan general-purpose hash cepat. Jangan log password. Izinkan password manager dan paste. Periksa kompromi password bila policy dan privacy memungkinkan.

3. MFA dan reauthentication

MFA mengurangi risiko credential compromise, tetapi enrollment dan reset harus dilindungi. Minta reauthentication untuk perubahan sensitif sesuai risk, misalnya mengganti MFA atau payout account.

4. Session ID

Session ID harus acak, tidak bermakna, dan dianggap untrusted input. Rotasi setelah login dan perubahan privilege untuk mengurangi session fixation. Jangan menaruh session ID pada URL.

Contoh cookie:

Set-Cookie: __Host-session=REDACTED; Path=/; Secure; HttpOnly; SameSite=Lax

Prefix __Host- mensyaratkan Secure, Path=/, dan tanpa Domain. Pilih SameSite berdasarkan alur aplikasi; SameSite=None memerlukan Secure.

5. Timeout dan revocation

Gunakan idle timeout dan absolute timeout sesuai sensitivity. Logout harus mencabut server-side session, bukan hanya menghapus cookie browser. Siapkan revocation untuk password reset, device loss, dan suspected compromise.

6. Token storage

Jangan membuat keputusan universal “JWT selalu lebih aman”. Token stateless menyulitkan immediate revocation dan memperbesar konsekuensi leakage. Pilih session architecture berdasarkan requirement, bukan tren.

7. Rate limiting dan response

Rate limiting harus mempertimbangkan account, IP, device signal, dan abuse pattern tanpa mudah dipakai untuk denial of service terhadap korban. Hindari response yang memudahkan account enumeration.

8. Logging

Catat login success/failure secara proporsional, MFA change, recovery, session revocation, dan privilege change. Jangan mencatat password, OTP, session token, refresh token, atau authorization header.

Kesalahan umum

  • Session tetap sama sebelum dan setelah login.
  • Logout hanya client-side.
  • Reset password tidak mencabut session.
  • Cookie tanpa Secure/HttpOnly yang relevan.
  • Menyamakan decoding JWT dengan verification.

Quality gate sebelum diterapkan

  • [ ] Scope dan asset sudah jelas.
  • [ ] Control dijalankan di sisi yang menjadi security boundary.
  • [ ] Positive test dan negative test tersedia.
  • [ ] Error tidak membocorkan secret atau detail internal.
  • [ ] Logging cukup untuk detection tanpa merekam credential.
  • [ ] Versi dependency dan dokumentasi dicatat.
  • [ ] Tidak ada klaim “100% aman”.
  • [ ] Perubahan diuji pada staging atau local lab.

Kesimpulan

Setelah identity dan session, kita mengamankan channel komunikasi. Tutorial berikutnya membahas HTTPS, TLS, dan certificate.

Referensi resmi

Post Terkait

Web Application Security Fundamentals #07: Input Validation

Pelajari allowlist, schema validation, canonicalization, server-side validation, dan perbedaannya dari sanitization sert...

26 Agt 2026

Web Application Security Fundamentals #06: Secure SDLC

Masukkan threat modeling, secure design, code review, testing, deployment, monitoring, dan incident learning ke seluruh...

25 Agt 2026

Web Application Security Fundamentals #05: Common Web Attack Vectors

Kenali jalur serangan umum seperti input, identity, session, upload, dependency, dan business logic tanpa menguji target...

25 Agt 2026

© 2026 Yowisben. Semua hak dilindungi.

Powered by LONTAR CMS v1.71.0