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

Data masukan dan batas kepercayaan

Misi: merapikan checkout toko batik

Setelah pelajaran ini kamu bisa menggabungkan batas kepercayaan dan query berparameter pada alur checkout dan riwayat pesanan sebuah toko daring.

±17 menitDiperiksa 7 Okt 2026

Materi

Toko Batik Laweyan menjual kain lewat situs sendiri. Audit internal menemukan tiga masalah di kode checkout: harga dan pemilik pesanan dibaca dari permintaan, query dirakit dengan f-string, dan riwayat pesanan menerima parameter pemilik_id dari URL. Tugasmu memperbaiki fungsinya tanpa mengubah tampilan atau skema tabel.

Ingat urutan kerjanya. Tentukan dulu nilai mana yang datang dari luar batas kepercayaan, lalu tanyakan untuk tiap nilai apakah server sudah memilikinya sendiri. Harga produk ada di tabel produk, pemilik ada di sesi. Nilai yang memang harus datang dari pengguna, seperti produk_id, jumlah, dan filter status, diperiksa lalu dikirim ke SQLite lewat parameter, tidak pernah disisipkan ke teks SQL.

# Pola yang dipakai di misi ini, dengan tabel lain: kursus dan pendaftaran
harga = conn.execute("SELECT harga FROM kursus WHERE id = ?", (kursus_id,)).fetchone()
if harga is None:
    raise ValueError("kursus tidak dikenal")
conn.execute("INSERT INTO pendaftaran(peserta_id, kursus_id, bayar) VALUES (?, ?, ?)",
             (sesi["user_id"], kursus_id, harga[0]))

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 2 dari 4

Seorang rekan mengusulkan perbaikan cepat untuk query pencarian: tetap memakai f-string, tetapi setiap tanda petik di nama diganti menjadi dua tanda petik dulu. Apa tanggapan yang sesuai dengan cheat sheet SQL Injection Prevention OWASP?

Pilih satu jawaban

Latihan 4 dari 4

Aplikasi kasir mengirim header X-Peran: admin di setiap permintaan, dan server membuka menu pengaturan harga bila header itu bernilai admin. Apa masalahnya?

Pilih satu jawaban

Catatanmu

Memuat catatan…

tersimpan otomatis, ikut tercetak · 0/4.000

Luluskan semua latihan dulu untuk menandai pelajaran ini selesai.

Lanjutkan ke