Mata Kuliah: Aplikasi Web (TW2). Durasi: 120 menit (Tatap Muka). Target: Mahasiswa semester 2.
Tujuan Pembelajaran
- Menjelaskan autentikasi dan otorisasi
- Membangun sistem login, pendaftaran, sesi, dan logout
- Menyimpan kata sandi dengan aman
- Membatasi akses halaman berdasarkan peran pengguna
Capaian Pembelajaran
Mahasiswa mampu membangun sistem autentikasi dan kontrol akses berbasis peran, lengkap dengan penyimpanan kata sandi yang aman.
Konsep Materi
Untuk memahami penerapannya, bayangkan sebuah aplikasi perkantoran. Karyawan umum login dengan akun mereka untuk melihat data tugas, sementara administrator memiliki hak untuk mengelola daftar karyawan, mengubah peran, dan menghapus akun. Tanpa kontrol peran, setiap pengguna yang berhasil login dapat mengubah data apa pun, yang jelas tidak diinginkan. Kontrol akses berbasis peran menjadi pemisah antara hak-hak tersebut dengan tegas dan terprogram.
Sebuah sistem login yang baik memperhatikan pula pesan yang ditampilkan kepada pengguna. Ketika kata sandi salah, pesan sebaiknya tidak mengungkap apakah nama pengguna yang diketik benar ada atau tidak, agar tidak memudahkan penyerang menebak akun. Registrasi juga harus menghindari pendaftaran akun dengan karakter yang tidak diizinkan. Perhatian terhadap detail seperti ini mencerminkan kesadaran keamanan yang menjadi nilai lebih bagi seorang pengembang web.
Sesi sendiri memiliki batas waktu dan perlu dijaga keamanannya. Menyimpan hanya identitas minimum pada sesi, dan selalu memulai ulang sesi pada peristiwa penting seperti login, merupakan praktik yang membantu mencegah penyalahgunaan. Pengguna juga diharuskan logout ketika selesai menggunakan aplikasi agar sesi tidak terbuka pada perangkat bersama. Kesadaran terhadap kebiasaan ini menumbuhkan sikap hati-hati dalam mengelola identitas.
Untuk mengamati cara kerja sesi, mahasiswa dapat mencoba membuka dua peramban atau jendela berbeda sekaligus. Login pada salah satu jendela tidak otomatis membuat jendela lain terautentikasi, karena sesi melekat pada identitas yang dibawa oleh masing-masing peramban. Percobaan sederhana ini membuat konsep sesi yang abstrak menjadi nyata dan mudah dipahami.
Materi autentikasi ini menjadi salah satu pembeda antara aplikasi yang hanya menampilkan data dan aplikasi yang benar-benar mengelola penggunanya. Tanpa autentikasi, tidak mungkin melindungi data pribadi pengguna, membatasi hak, atau menghadirkan pengalaman yang disesuaikan dengan tiap akun. Menguasai autentikasi dan peran berarti menguasai salah satu pilar paling penting dalam pengembangan aplikasi web yang profesional.
Autentikasi adalah proses membuktikan identitas pengguna sebelum diizinkan masuk ke dalam aplikasi web. Identitas umumnya berupa kombinasi nama pengguna dan kata sandi. Setelah identitas terbukti, aplikasi mengenali pengguna tersebut pada setiap permintaan selanjutnya melalui mekanisme sesi. Berbeda dengan itu, otorisasi menentukan apa yang boleh dilakukan pengguna yang sudah terautentikasi, misalnya admin boleh menghapus data sementara pengguna biasa hanya boleh melihat.
PHP menyediakan fasilitas sesi untuk melacak keadaan pengguna antar halaman. Sesi menjaga data pada server dan akrab dengan identitas pengguna melalui alamat di browser. Setelah login berhasil, aplikasi menyimpan identitas pengguna ke dalam sesi, misalnya id dan peran. Pada setiap halaman yang dilindungi, aplikasi memeriksa keberadaan nilai tersebut; bila tidak ada, pengguna diarahkan kembali ke halaman login. Teknik ini menjaga halaman admin tetap aman dari pengunjung yang belum masuk.
Peran pengguna adalah cara mengelompokkan hak akses, seperti admin yang mengelola penuh dan user yang hanya dapat membaca atau menulis sesuai aturan. Pada tabel pengguna ditambahkan kolom peran untuk menandai setiap akun. Pengecekan peran dilakukan pada halaman tertentu, sehingga pengguna dengan peran yang tidak berhak dapat diarahkan atau diberi peringatan. Pola ini membuka jalan ke sistem dengan banyak level peran yang lebih kompleks.
Untuk melindungi kata sandi, nilai tidak boleh disimpan dalam teks biasa. PHP menyediakan fungsi hashing untuk mengubah kata sandi menjadi rangkaian tak terbaca satu arah. Saat login, fungsi verifikasi membandingkan kata sandi yang dimasukkan dengan hash yang tersimpan. Dengan cara ini, meskipun database bocor, kata sandi asli pengguna tetap sulit diperoleh. Kebiasaan ini wajib diterapkan sejak awal membangun aplikasi.
Langkah Praktik
- Tambahkan kolom peran pada tabel pengguna.
- Buat halaman pendaftaran yang menyimpan pengguna dengan kata sandi ter-hash.
- Buat halaman login yang memverifikasi data lalu memulai sesi.
- Buat halaman logout yang mengakhiri sesi.
- Lindungi halaman admin hanya untuk peran tertentu dan tampilkan nama pengguna yang masuk.
Latihan / Proyek
- Buat dua akun dengan peran berbeda dan uji aksesnya
- Arahkan pengguna yang belum masuk ke halaman login saat mengakses halaman admin
- Tampilkan pesan selamat datang sesuai nama pengguna
- Tambahkan fitur ganti kata sandi
- Cegah nama pengguna ganda dengan pemeriksaan sebelum menyimpan
Rekap & Tindak Lanjut
Mahasiswa mampu menjelaskan autentikasi dan otorisasi, membangun sistem login serta sesi, menyimpan kata sandi dengan aman, dan membatasi akses berdasarkan peran. Lapisan ini menjadi kunci keamanan utama yang dipakai pada proyek akhir.
