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 13 dari 14

Autentikasi, otorisasi, dan pengujian akses

Otorisasi per objek dan pengujian akses

Setelah pelajaran ini kamu bisa membatasi query ke objek milik pengguna yang sedang masuk, menolak secara bawaan, dan menguji akses dengan matriks peran dan percobaan lintas pemilik.

±14 menitDiperiksa 7 Okt 2026

Materi

Insecure Direct Object Reference (IDOR) terjadi bila pengguna bisa membaca atau mengubah objek orang lain hanya dengan mengganti pengenalnya, misalnya nomor faktur di URL, karena server tidak memeriksa apakah objek itu boleh diaksesnya. OWASP menyebut tiga unsurnya: objek, rujukan ke objek itu, dan pemeriksaan otorisasi per objek yang hilang. Pengenal acak seperti UUID mempersulit tebakan, tetapi tidak menggantikan pemeriksaan: pengenal bisa bocor lewat tautan atau log.

Penangkalnya ditulis di query: cari objek di antara objek yang memang boleh diakses pengguna, misalnya WHERE id = ? AND pemilik_id = ? dengan pemilik dari sesi. Objek milik orang lain dan objek yang tidak ada memberi hasil sama, yaitu tidak ditemukan. Cheat sheet Authorization OWASP menambahkan dua prinsip: tolak secara bawaan (deny by default), sehingga aksi atau peran yang tidak tercantum ditolak, dan periksa izin di setiap permintaan.

IZIN = {"siswa": {"lihat-nilai"}, "guru": {"lihat-nilai", "ubah-nilai"}}

def boleh_akses(peran, aksi):
    return aksi in IZIN.get(peran, set())     # peran/aksi tak dikenal → False

def ambil_rapor(conn, sesi, rapor_id):
    return conn.execute("SELECT * FROM rapor WHERE id = ? AND siswa_id = ?",
                        (rapor_id, sesi["user_id"])).fetchone()

Pengujian akses mengikuti pola yang sama. OWASP menyarankan matriks otorisasi, yaitu tabel peran × fungsi berisi boleh atau tidak, yang dijalankan sebagai test pada setiap rilis. Untuk objek, buat data milik dua akun, masuk sebagai akun A, coba baca dan ubah objek milik B, dan pastikan semuanya ditolak.

Latihan

0/3 lulus

Jawaban diperiksa di server. Lulus berarti kamu memahami contohnya, bukan penilaian seluruh pekerjaanmu.

Latihan 3 dari 3

Halaman detail resep di aplikasi klinik memakai alamat /resep/{id}. Kasus uji mana yang menangkap pemeriksaan pemilik objek yang hilang?

Pilih satu jawaban

Catatanmu

Memuat catatan…

tersimpan otomatis, ikut tercetak · 0/4.000

Luluskan semua latihan dulu untuk menandai pelajaran ini selesai.

Lanjutkan ke