MATERI 13 DARI 28
Authentication, session, dan authorization
Bangun login dan session dengan hash password, cookie aman, rotasi session ID, dan authorization server-side.
Tujuan pembelajaran
- Membedakan authentication dan authorization.
- Menetapkan cookie Secure/HttpOnly/SameSite.
- Mencegah privilege escalation.
Konsep utama
Password hashing
Gunakan primitive modern bawaan platform; jangan mengenkripsi password secara reversible.
Authorization setiap request
Menu tersembunyi bukan security boundary; route/repository harus memeriksa permission.
Alur kerja teknis
- Tulis tujuan dan acceptance criteria.
- Buat perubahan kecil yang dapat ditinjau.
- Jalankan test dan baca diff sebelum menerima hasil AI.
Contoh implementasi
Password hash dan verify
$hash = password_hash($password, PASSWORD_DEFAULT);
if (!password_verify($submittedPassword, $hash)) {
throw new RuntimeException('Login gagal');
}
session_regenerate_id(true);Authorization middleware
function requireRole(role) {
return (req, res, next) => {
if (!req.user || req.user.role !== role) return res.sendStatus(403);
next();
};
}Aspek keamanan
- Gunakan pesan login generik untuk mencegah account enumeration.
- Rate-limit percobaan login.
- Recheck akun aktif dan role, jangan percaya role dari client.
Kesalahan umum
- Menerima kode AI tanpa membaca diff dan memahami alur data.
- Menguji hanya happy path dan mengabaikan input salah atau batas nilai.
- Menyimpan secret, token, atau data nyata di prompt dan source code.
Pengujian dan verifikasi
- Jalankan contoh dengan input normal.
- Ulangi dengan input kosong, tipe salah, dan nilai batas.
- Pastikan error tidak membocorkan secret atau detail internal.
Latihan
- Modifikasi contoh dengan satu kebutuhan baru dan tulis acceptance criteria-nya.
- Tambahkan satu negative test lalu jelaskan risiko yang dicegah.
Checklist
- Tujuan dan batas pekerjaan jelas.
- Input divalidasi di server.
- Secret tidak berada di source/prompt.
- Test lulus dan diff sudah dibaca.
Rangkuman
Bangun login dan session dengan hash password, cookie aman, rotasi session ID, dan authorization server-side.