Lompat ke konten utama

Kompetisi Ajak Teman: hadiah total Rp1.000.000 tunai untuk 3 pengajak terbanyak. Berakhir 29 November 2026. Ikut kompetisi

←

Pemrograman Web Aman: Input, Query, dan Hak Akses

Pelajaran 14 dari 14

Autentikasi, otorisasi, dan pengujian akses

Misi: portal pasien klinik

Setelah pelajaran ini kamu bisa menggabungkan verifikasi kata sandi, query berparameter, dan otorisasi per objek pada portal pasien sebuah klinik.

±17 menitDiperiksa 7 Okt 2026

Materi

Klinik Sehat Sentosa membuka portal untuk pasien, dokter, dan admin. Pasien masuk dengan surel dan kata sandi, membaca dan mengubah catatan kesehatannya sendiri, dan membatalkan janji temu. Admin boleh membatalkan janji siapa pun. Uji coba menemukan bahwa fungsi masuk memakai SHA-256 tanpa garam, catatan bisa diubah lewat id milik pasien lain, dan janji bisa dihapus siapa saja.

Fungsi masuk mencari pengguna dengan query berparameter, menghitung ulang PBKDF2 dari garam dan putaran tersimpan, lalu membandingkan dengan compare_digest. Surel yang tidak terdaftar dan kata sandi yang salah memberi hasil sama, None, supaya portal tidak membocorkan surel mana yang terdaftar. Setiap perubahan data memeriksa pemilik di dalam query yang sama, dan rowcount memberi tahu apakah ada baris yang memang berubah.

# Pola ubah-milik-sendiri di tabel lain: alamat pengiriman
cur = conn.execute("UPDATE alamat SET isi = ? WHERE id = ? AND pemilik_id = ?",
                   (isi_baru, alamat_id, sesi["user_id"]))
berhasil = cur.rowcount == 1

Latihan

0/4 lulus

Misi akhir modul: luluskan minimal 4 dari 4 tugas. Jawaban diperiksa di server. Lulus berarti kamu memahami contohnya, bukan penilaian seluruh pekerjaanmu.

Latihan 4 dari 4

Kenapa verifikasi kata sandi di portal memakai hmac.compare_digest(a, b), bukan a == b?

Pilih satu jawaban

Catatanmu

Memuat catatan…

tersimpan otomatis, ikut tercetak · 0/4.000

Luluskan semua latihan dulu untuk menandai pelajaran ini selesai.

Lanjutkan ke