Semua artikel

Basic Authentication: cara kerja metode paling sederhana untuk melindungi resource HTTP

HTTP Basic Authentication adalah salah satu cara tertua dan paling sederhana untuk melindungi sebuah resource dengan kata sandi: browser meminta username dan password, lalu keduanya dikirim ke server pada setiap request. Kesederhanaan ini justru menjadi kelemahan utamanya.

Bagaimana header Authorization dibentuk

Username dan password digabung dengan tanda titik dua (username:password), lalu seluruh string tersebut di-encode dengan Base64 dan dimasukkan ke header Authorization: Basic <string_terenkode>. Browser otomatis mengirim ulang header ini pada setiap request berikutnya setelah login pertama berhasil.

Kenapa Base64 bukan keamanan

Base64 adalah skema encoding, bukan enkripsi — siapa pun bisa men-decode string tersebut kembali menjadi username:password dalam hitungan detik, tanpa butuh kunci apa pun. Jika request-nya disadap — misalnya lewat Wi-Fi publik yang tidak aman — kredensial langsung terekspos.

.htpasswd dan proteksi shared hosting

Basic Auth lewat file .htpasswd masih sangat umum dipakai di lingkungan shared hosting berbasis cPanel, yang populer di kalangan developer dan UKM Indonesia untuk melindungi direktori staging atau admin panel dengan cepat tanpa perlu membangun sistem login sendiri. Karena Base64 meng-encode byte, bukan karakter, penting diingat bahwa karakter non-ASCII apa pun dalam password (misalnya tanda kutip pintar hasil copy-paste dari Word) akan memakan lebih dari 1 byte di UTF-8 — hasil token Base64-nya jadi lebih panjang dari yang terlihat sekilas.

Kegunaannya

  • Melindungi server staging atau tool internal dengan cepat selama masa pengembangan.
  • Membentuk header Authorization yang benar untuk menguji API secara manual lewat curl atau Postman.
  • Memahami kenapa Basic Auth lewat HTTP biasa (tanpa HTTPS) dianggap celah keamanan serius.

Basic Auth tidak punya mekanisme logout bawaan

Browser menyimpan kredensial di cache dan otomatis menambahkan header Authorization ke setiap request berikutnya ke origin yang sama, sampai tab-nya ditutup — protokol ini memang tidak menyediakan tombol "logout" standar. Untuk memaksa pengguna keluar, server biasanya memakai trik: sengaja mengembalikan 401 dengan nilai realm yang berbeda, atau mengandalkan pengguna untuk menutup sendiri semua tab browser-nya.

Coba alat