WEB29 / BELAJAR DAN MENCOBA
API: field yang berlebihan
Masih dalam pengembangan. Belajar pelan-pelan. Gunakan komputer sendiri dan data contoh.
Isi pelajaran ini
Kita belajar apa?
API adalah cara program saling bertukar data. Program sebaiknya mengirim hanya data yang diperlukan. Menyembunyikan data di tampilan tidak cukup jika data itu masih ada dalam jawaban mentah.
Bayangkan seperti ini
Saat meminjam buku, petugas cukup memberi data buku, bukan seluruh catatan internal perpustakaan.
Arti kata yang mungkin baru
- fixed
- mode lab yang memperbaiki kesalahan contoh
- vulnerable
- mode lab yang sengaja dibuat memiliki kesalahan untuk latihan
- field
- satu bagian data yang mempunyai nama
Penjelasan tambahan jika kamu ingin tahu lebih jauh
API dapat membocorkan data meski objek boleh diakses. Serialisasi seluruh objek internal dapat mengirim field yang tidak dibutuhkan klien. Lab /api/profile mempunyai nama publik dan internal_note fiktif; fixed memakai daftar field yang diizinkan.
Persiapan
Siapkan catatan dan baca panduan perangkat. Pakai data buatan, bukan data pribadi. Baca satu langkah, kerjakan, lalu periksa hasilnya sebelum melanjutkan.
- Unduh dan ekstrak ZIP lab dari halaman Perlengkapan ke komputer sendiri.
- Buka terminal di folder lab. Jalankan
python lab_web.py --enable-local-training. Gunakanpyataupython3jika itu nama Python pada perangkatmu. - Biarkan terminal tetap terbuka. Buka browser dan tulis
http://127.0.0.1:8765/pada bilah alamat di atas, lalu Enter. - Jika langkah menyebut
/noteatau nama halaman lain, tambahkan ke alamat lab. Contoh:http://127.0.0.1:8765/note?mode=fixed&id=1. Pilih mode lewat kotak pilihan jika tersedia. - Sesudah selesai, kembali ke terminal dan tekan Ctrl+C untuk menghentikan lab.
Langkah latihan
- Buka /api/profile?mode=vulnerable&id=1.
- Cari field internal_note yang berisi DEMO-ONLY.
- Ganti mode menjadi fixed.
- Bandingkan nama field yang dikirim.
- Catat bahwa field internal tidak ikut terkirim pada fixed.
Hasil yang diharapkan
Fixed mengirim id dan name saja. Data internal tidak sekadar disembunyikan dari tampilan.
Bandingkan dengan hasilmu sendiri. Jika berbeda, tulis apa yang terlihat lalu baca bagian bantuan di bawah. Jangan mengaku berhasil jika langkahnya belum kamu coba.
Jika terhambat
Berhenti sebentar dan baca pesan yang muncul. Periksa nama file, folder, alamat, dan apakah program latihan masih berjalan. Ulangi satu langkah saja. Jika tetap bingung, minta bantuan guru atau pendamping; jangan mematikan keamanan perangkat.
Petunjuk khusus untuk pelajaran ini
Nama field saja tidak selalu berarti rahasia; lab secara eksplisit menetapkan field internal tidak untuk klien.
Apa yang perlu kamu catat?
Tulis langkah yang kamu lakukan dan hasil yang benar-benar terlihat. Tambahkan satu kalimat: “Saya belajar bahwa …”. Untuk latihan menggambar, simpan gambar dan jawabanmu.
Cek pemahamanmu
Mengapa internal_note harus hilang dari JSON, bukan hanya UI?
Buka pembahasan
Klien dapat membaca respons mentah. Field yang tidak diperlukan dan tidak boleh diketahui harus dibatasi pada serialisasi server.
Tantangan mandiri
Mengapa menyembunyikan field di tampilan tidak cukup jika JSON tetap memuatnya?
Pedoman penilaian tantangan
Jawaban harus sesuai hasil aktual, menyebut batas kesimpulan, dan tidak keluar scope. Gunakan langkah serta hasil harapan pelajaran sebagai pembanding; nilai 0 bila belum ada, 1 bila sebagian, 2 bila jelas dan dapat ditinjau.
Perbaikan & retest
Serialisasikan field sesuai kebutuhan dan kebijakan; gabungkan dengan otorisasi objek.
